{
 "metadata": {
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.9"
  },
  "orig_nbformat": 2,
  "kernelspec": {
   "name": "python369jvsc74a57bd054f0cca124f38538f0af9da5035feb8330e039430efda7f6532c7bec2bbfbd8a",
   "display_name": "Python 3.6.9 64-bit ('pysyft': virtualenvwrapper)"
  },
  "metadata": {
   "interpreter": {
    "hash": "31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2,
 "cells": [
  {
   "source": [
    "# 数据处理"
   ],
   "cell_type": "markdown",
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "(11598, 471) int64\n[[   1    0    0 ...   37   10    1]\n [   3    0    0 ... 2838   46    1]\n [   2    0    0 ...  111   20    1]\n [   1    0    0 ...  987  197    1]\n [   3    0    0 ...   98   25    1]]\n"
     ]
    }
   ],
   "source": [
    "# 1 读取数据使用pandas读取csv数据\n",
    "import pandas as pd \n",
    "import numpy as np \n",
    "from sklearn.utils import shuffle\n",
    "from sklearn import preprocessing\n",
    "\n",
    "# import random\n",
    "\n",
    "# np.set_printoptions(precision=5)\n",
    "\n",
    "data_pd = pd.read_csv('../data/maldroid2020/feature_vectors_syscallsbinders_frequency_5_Cat.csv')\n",
    "data_np = data_pd.values\n",
    "\n",
    "print(data_np.shape,data_np.dtype)\n",
    "print(data_np[:5])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "2    3904\n3    2546\n1    2100\n4    1795\n0    1253\ndtype: int64\n[[   1    0    0 ...  360   94    5]\n [  10    0    0 ... 1786  353    4]\n [   2    0    0 ...  467  199    5]\n ...\n [ 120    0    0 ... 1670 1616    4]\n [   6    0    0 ...  652   97    1]\n [  21    0    0 ...  322   90    4]]\n"
     ]
    }
   ],
   "source": [
    "# 2 数据处理-打乱数据\n",
    "# print(data_np[:5])\n",
    "data_np = shuffle(data_np)\n",
    "# random.shuffle(data_np) # random the dataset\n",
    "x,y = data_np[:,0:470],data_np[:,470]-1\n",
    "\n",
    "# print(np.sum(data_np[:,-1]==3))\n",
    "print(pd.value_counts(y))\n",
    "print(data_np[:50])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "4    3904\n3    3904\n2    3904\n1    3904\n0    3904\ndtype: int64\n"
     ]
    }
   ],
   "source": [
    "# 对小类别的数据进行重复过采样\n",
    "from imblearn.over_sampling import RandomOverSampler ,SMOTE, ADASYN,BorderlineSMOTE, KMeansSMOTE, SVMSMOTE\n",
    "\n",
    "# ros = RandomOverSampler(random_state=0)\n",
    "\n",
    "ros = SMOTE(random_state=0)\n",
    "# ros = ADASYN(random_state=0)\n",
    "# ros = BorderlineSMOTE(random_state=0, kind=\"borderline-1\")\n",
    "# ros = BorderlineSMOTE(random_state=0, kind=\"borderline-2\")\n",
    "# ros = KMeansSMOTE(random_state=0)\n",
    "# ros = SVMSMOTE(random_state=0),\n",
    "\n",
    "x, y = ros.fit_resample(x, y)\n",
    "\n",
    "print(pd.value_counts(y))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "# a = [[1,2,3],[4,5,6],[7,8,9],[1,2,3],[3,3,3],[3,3,3],[10,11,12]]\n",
    "# # a = np.array(a)\n",
    "# from numpy import random \n",
    "# random.shuffle(a)\n",
    "# # random.shuffle(a)\n",
    "# a"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "[[1.30770237e-04 0.00000000e+00 0.00000000e+00 ... 9.59692898e-04\n  7.34590435e-04 7.22323484e-05]\n [1.30770237e-03 0.00000000e+00 0.00000000e+00 ... 1.15163148e-02\n  3.64438477e-03 2.71255521e-04]\n [2.61540473e-04 0.00000000e+00 0.00000000e+00 ... 1.91938580e-03\n  9.52927037e-04 1.52917418e-04]\n [2.61540473e-04 0.00000000e+00 0.00000000e+00 ... 0.00000000e+00\n  2.10174486e-04 4.61057543e-06]\n [0.00000000e+00 0.00000000e+00 0.00000000e+00 ... 0.00000000e+00\n  7.75401015e-05 2.30528772e-06]]\n[4 3 4 1 2]\n"
     ]
    }
   ],
   "source": [
    "# 2 数据处理-归一化\n",
    "\n",
    "# 数据最大最小值归一化\n",
    "minmax_scaler = preprocessing.MinMaxScaler()\n",
    "x = minmax_scaler.fit_transform(x)\n",
    "# 标准归一化\n",
    "# standard_scaler = preprocessing.StandardScaler()\n",
    "# x = standard_scaler.fit_transform(x)\n",
    "print(x[:5])\n",
    "print(y[:5])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "4    3135\n3    3125\n0    3123\n2    3118\n1    3115\ndtype: int64\n1    789\n2    786\n0    781\n3    779\n4    769\ndtype: int64\n"
     ]
    }
   ],
   "source": [
    "# 2 数据处理-分割数据集\n",
    "from sklearn.model_selection import train_test_split\n",
    "# 对数据进行处理和分割\n",
    "# print(X.shape,y.shape)\n",
    "x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.2,random_state=0)\n",
    "\n",
    "# 统计各个类别的数值\n",
    "print(pd.value_counts(y_train))\n",
    "print(pd.value_counts(y_test))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "# # 对小类别的数据进行重复过采样\n",
    "# from imblearn.over_sampling import RandomOverSampler ,SMOTE, ADASYN,BorderlineSMOTE, KMeansSMOTE, SVMSMOTE\n",
    "\n",
    "# ros = RandomOverSampler(random_state=0)\n",
    "\n",
    "# # ros = SMOTE(random_state=0)\n",
    "# # ros = ADASYN(random_state=0)\n",
    "# # ros = BorderlineSMOTE(random_state=0, kind=\"borderline-1\")\n",
    "# # ros = BorderlineSMOTE(random_state=0, kind=\"borderline-2\")\n",
    "# # ros = KMeansSMOTE(random_state=0)\n",
    "# # ros = SVMSMOTE(random_state=0),\n",
    "\n",
    "# x_train, y_train = ros.fit_resample(x_train, y_train)\n",
    "\n",
    "# print(pd.value_counts(y_train))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "torch.Size([15616, 470]) torch.Size([15616])\ntorch.float32 torch.int64\n"
     ]
    }
   ],
   "source": [
    "# 2 数据处理-转换tensor。使用dataset和dataloder对数据集进行管理\n",
    "from torch.utils import data \n",
    "import torch \n",
    "device = torch.device(\"cuda:0\" if torch.cuda.is_available() else \"cpu\")\n",
    "\n",
    "# 将数据转换成tensor\n",
    "x_train_tensor = torch.FloatTensor(x_train)\n",
    "y_train_tensor = torch.LongTensor(y_train)\n",
    "x_test_tensor = torch.FloatTensor(x_test)\n",
    "y_test_tensor = torch.LongTensor(y_test)\n",
    "\n",
    "print(x_train_tensor.shape,y_train_tensor.shape)\n",
    "print(x_test_tensor.dtype,y_train_tensor.dtype)\n",
    "# print(y[:50])\n",
    "# print(y_test_tensor[:50])\n",
    "batch_size = 256\n",
    "train_ds = data.TensorDataset(x_train_tensor,y_train_tensor)\n",
    "test_ds = data.TensorDataset(x_test_tensor,y_test_tensor)\n",
    "\n",
    "train_dl = data.DataLoader(train_ds,batch_size=batch_size,shuffle=True)\n",
    "test_dl = data.DataLoader(test_ds,batch_size=10000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 定义神经网络\n",
    "import torch.nn as nn\n",
    "import torch.nn.functional as F \n",
    "\n",
    "class Net(nn.Module):\n",
    "    \"\"\"A simple implementation of Deep Neural Network model\"\"\"\n",
    "    def __init__(self):\n",
    "        super(Net, self).__init__()\n",
    "        self.input = 470\n",
    "        self.output = 5\n",
    "        self.hidden= 300\n",
    "        self.model = nn.Sequential(\n",
    "            nn.Linear(self.input, self.hidden),\n",
    "            #nn.Dropout(0.5),\n",
    "            nn.ReLU(),\n",
    "            nn.Linear(self.hidden, self.hidden),\n",
    "            #nn.Dropout(0.5),\n",
    "            nn.ReLU(),\n",
    "            nn.Linear(self.hidden, self.output))\n",
    "    def forward(self, x):\n",
    "        return self.model(x)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 创建模型，初始化损失准则和优化器\n",
    "import torch.optim as optim \n",
    "\n",
    "# 创建神经网络模型\n",
    "model = Net().to(device)\n",
    "# print(model.parameters())\n",
    "# 创建损失准则函数\n",
    "loss_func = nn.CrossEntropyLoss()\n",
    "# criterion = nn.MSELoss()\n",
    "# 创建梯度下降优化器\n",
    "opt_func = optim.Adam(params = model.parameters(),lr=0.001)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "tags": [
     "outputPrepend"
    ]
   },
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      " --3:87.548  --4:93.628\n",
      "第94轮： --loss:0.001 --accuracy:93.391 --0:94.622  --1:91.381  --2:97.964  --3:91.271  --4:91.678\n",
      "第95轮： --loss:0.002 --accuracy:93.263 --0:95.647  --1:91.635  --2:97.328  --3:89.859  --4:91.808\n",
      "第96轮： --loss:0.002 --accuracy:93.494 --0:94.238  --1:91.001  --2:96.310  --3:93.196  --4:92.718\n",
      "第97轮： --loss:0.001 --accuracy:93.443 --0:91.037  --1:91.128  --2:98.855  --3:94.095  --4:92.068\n",
      "第98轮： --loss:0.001 --accuracy:93.596 --0:94.878  --1:89.861  --2:98.601  --3:92.811  --4:91.808\n",
      "第99轮： --loss:0.002 --accuracy:93.648 --0:95.006  --1:90.114  --2:98.728  --3:92.555  --4:91.808\n",
      "第100轮： --loss:0.002 --accuracy:92.802 --0:95.519  --1:91.381  --2:93.130  --3:90.244  --4:93.758\n",
      "第101轮： --loss:0.002 --accuracy:93.289 --0:98.079  --1:91.001  --2:96.183  --3:91.913  --4:89.207\n",
      "第102轮： --loss:0.001 --accuracy:93.622 --0:95.647  --1:90.494  --2:98.728  --3:91.271  --4:91.938\n",
      "第103轮： --loss:0.002 --accuracy:93.724 --0:96.159  --1:90.748  --2:96.819  --3:93.325  --4:91.547\n",
      "第104轮： --loss:0.002 --accuracy:93.494 --0:95.519  --1:91.128  --2:98.728  --3:91.271  --4:90.767\n",
      "第105轮： --loss:0.002 --accuracy:92.982 --0:93.982  --1:93.156  --2:97.074  --3:92.298  --4:88.296\n",
      "第106轮： --loss:0.002 --accuracy:93.648 --0:93.982  --1:91.128  --2:97.837  --3:94.095  --4:91.157\n",
      "第107轮： --loss:0.002 --accuracy:92.597 --0:97.055  --1:90.114  --2:97.837  --3:86.906  --4:91.027\n",
      "第108轮： --loss:0.001 --accuracy:93.699 --0:96.415  --1:91.508  --2:98.346  --3:90.629  --4:91.547\n",
      "第109轮： --loss:0.001 --accuracy:93.212 --0:97.055  --1:91.001  --2:96.310  --3:92.811  --4:88.817\n",
      "第110轮： --loss:0.001 --accuracy:93.340 --0:95.134  --1:90.748  --2:97.837  --3:90.757  --4:92.198\n",
      "第111轮： --loss:0.003 --accuracy:92.930 --0:93.470  --1:91.888  --2:97.455  --3:90.116  --4:91.678\n",
      "第112轮： --loss:0.001 --accuracy:92.879 --0:90.909  --1:93.916  --2:96.947  --3:91.014  --4:91.547\n",
      "第113轮： --loss:0.001 --accuracy:93.263 --0:96.671  --1:90.748  --2:98.346  --3:89.345  --4:91.157\n",
      "第114轮： --loss:0.002 --accuracy:93.878 --0:94.494  --1:91.888  --2:97.455  --3:92.426  --4:93.108\n",
      "第115轮： --loss:0.002 --accuracy:92.905 --0:97.439  --1:90.114  --2:97.964  --3:90.372  --4:88.557\n",
      "第116轮： --loss:0.002 --accuracy:93.724 --0:93.854  --1:90.621  --2:98.219  --3:94.095  --4:91.808\n",
      "第117轮： --loss:0.003 --accuracy:93.571 --0:96.415  --1:92.142  --2:93.639  --3:94.480  --4:91.157\n",
      "第118轮： --loss:0.001 --accuracy:93.852 --0:95.262  --1:91.001  --2:98.346  --3:93.710  --4:90.897\n",
      "第119轮： --loss:0.001 --accuracy:93.699 --0:95.391  --1:91.001  --2:95.929  --3:93.967  --4:92.198\n",
      "第120轮： --loss:0.001 --accuracy:93.468 --0:94.110  --1:91.381  --2:97.201  --3:93.710  --4:90.897\n",
      "第121轮： --loss:0.003 --accuracy:93.776 --0:95.262  --1:91.128  --2:96.565  --3:92.426  --4:93.498\n",
      "第122轮： --loss:0.001 --accuracy:93.494 --0:96.543  --1:90.621  --2:98.346  --3:91.913  --4:89.987\n",
      "第123轮： --loss:0.002 --accuracy:93.212 --0:90.909  --1:92.902  --2:98.346  --3:91.784  --4:92.068\n",
      "第124轮： --loss:0.001 --accuracy:94.237 --0:96.287  --1:90.114  --2:98.855  --3:93.068  --4:92.848\n",
      "第125轮： --loss:0.001 --accuracy:93.673 --0:94.494  --1:90.748  --2:96.947  --3:93.325  --4:92.848\n",
      "第126轮： --loss:0.002 --accuracy:94.032 --0:96.927  --1:90.748  --2:96.565  --3:93.453  --4:92.458\n",
      "第127轮： --loss:0.002 --accuracy:93.776 --0:97.439  --1:89.227  --2:97.201  --3:94.223  --4:90.767\n",
      "第128轮： --loss:0.002 --accuracy:92.444 --0:91.037  --1:94.170  --2:98.092  --3:90.372  --4:88.427\n",
      "第129轮： --loss:0.001 --accuracy:94.134 --0:96.671  --1:89.734  --2:98.219  --3:93.068  --4:92.978\n",
      "第130轮： --loss:0.001 --accuracy:93.110 --0:89.245  --1:91.381  --2:96.565  --3:93.325  --4:95.059\n",
      "第131轮： --loss:0.001 --accuracy:93.699 --0:97.311  --1:91.381  --2:95.929  --3:92.426  --4:91.417\n",
      "第132轮： --loss:0.002 --accuracy:92.597 --0:89.117  --1:92.269  --2:98.728  --3:92.041  --4:90.767\n",
      "第133轮： --loss:0.001 --accuracy:93.519 --0:97.439  --1:92.649  --2:97.710  --3:89.089  --4:90.637\n",
      "第134轮： --loss:0.002 --accuracy:93.238 --0:96.415  --1:91.128  --2:97.455  --3:89.987  --4:91.157\n",
      "第135轮： --loss:0.002 --accuracy:94.211 --0:95.262  --1:89.354  --2:98.855  --3:93.710  --4:93.888\n",
      "第136轮： --loss:0.002 --accuracy:93.468 --0:96.543  --1:93.029  --2:98.473  --3:88.832  --4:90.377\n",
      "第137轮： --loss:0.001 --accuracy:93.852 --0:97.055  --1:90.748  --2:96.438  --3:90.886  --4:94.148\n",
      "第138轮： --loss:0.001 --accuracy:93.494 --0:93.470  --1:91.255  --2:97.964  --3:94.223  --4:90.507\n",
      "第139轮： --loss:0.001 --accuracy:93.238 --0:97.183  --1:90.875  --2:98.728  --3:91.399  --4:87.906\n",
      "第140轮： --loss:0.001 --accuracy:92.700 --0:94.494  --1:93.283  --2:98.346  --3:88.832  --4:88.427\n",
      "第141轮： --loss:0.001 --accuracy:93.929 --0:95.262  --1:90.621  --2:98.601  --3:92.041  --4:93.108\n",
      "第142轮： --loss:0.002 --accuracy:93.724 --0:96.799  --1:90.114  --2:96.056  --3:91.528  --4:94.148\n",
      "第143轮： --loss:0.002 --accuracy:93.161 --0:91.933  --1:90.621  --2:98.346  --3:93.325  --4:91.547\n",
      "第144轮： --loss:0.003 --accuracy:94.032 --0:97.567  --1:90.621  --2:97.964  --3:91.399  --4:92.588\n",
      "第145轮： --loss:0.003 --accuracy:93.699 --0:93.854  --1:92.776  --2:98.346  --3:90.244  --4:93.238\n",
      "第146轮： --loss:0.002 --accuracy:94.288 --0:95.134  --1:92.776  --2:98.346  --3:93.068  --4:92.068\n",
      "第147轮： --loss:0.001 --accuracy:94.109 --0:95.775  --1:91.001  --2:98.728  --3:92.426  --4:92.588\n",
      "第148轮： --loss:0.001 --accuracy:94.416 --0:96.671  --1:90.748  --2:98.473  --3:93.710  --4:92.458\n",
      "第149轮： --loss:0.001 --accuracy:93.443 --0:94.622  --1:90.875  --2:98.982  --3:91.399  --4:91.287\n",
      "第150轮： --loss:0.002 --accuracy:93.468 --0:95.647  --1:92.015  --2:95.802  --3:92.555  --4:91.287\n",
      "第151轮： --loss:0.001 --accuracy:94.134 --0:96.415  --1:90.748  --2:98.728  --3:93.453  --4:91.287\n",
      "第152轮： --loss:0.002 --accuracy:94.134 --0:96.031  --1:91.255  --2:98.601  --3:92.811  --4:91.938\n",
      "第153轮： --loss:0.001 --accuracy:92.930 --0:90.909  --1:91.635  --2:96.819  --3:91.913  --4:93.368\n",
      "第154轮： --loss:0.001 --accuracy:93.673 --0:96.415  --1:91.128  --2:97.328  --3:89.859  --4:93.628\n",
      "第155轮： --loss:0.001 --accuracy:93.955 --0:93.854  --1:92.395  --2:98.346  --3:93.582  --4:91.547\n",
      "第156轮： --loss:0.001 --accuracy:94.109 --0:96.287  --1:90.875  --2:97.964  --3:93.710  --4:91.678\n",
      "第157轮： --loss:0.002 --accuracy:92.546 --0:90.525  --1:92.902  --2:98.855  --3:86.778  --4:93.628\n",
      "第158轮： --loss:0.001 --accuracy:94.109 --0:97.055  --1:91.508  --2:96.565  --3:92.940  --4:92.458\n",
      "第159轮： --loss:0.001 --accuracy:94.288 --0:95.903  --1:91.381  --2:97.583  --3:93.582  --4:92.978\n",
      "第160轮： --loss:0.002 --accuracy:93.545 --0:96.671  --1:90.114  --2:95.929  --3:94.223  --4:90.767\n",
      "第161轮： --loss:0.001 --accuracy:93.852 --0:96.287  --1:91.508  --2:98.728  --3:92.555  --4:90.117\n",
      "第162轮： --loss:0.001 --accuracy:93.750 --0:96.415  --1:92.142  --2:97.710  --3:92.298  --4:90.117\n",
      "第163轮： --loss:0.001 --accuracy:94.083 --0:94.494  --1:91.381  --2:96.947  --3:93.967  --4:93.628\n",
      "第164轮： --loss:0.001 --accuracy:94.083 --0:96.159  --1:91.762  --2:97.710  --3:91.399  --4:93.368\n",
      "第165轮： --loss:0.002 --accuracy:93.596 --0:96.799  --1:90.114  --2:98.473  --3:89.474  --4:93.108\n",
      "第166轮： --loss:0.002 --accuracy:93.366 --0:91.549  --1:94.170  --2:96.819  --3:91.399  --4:92.848\n",
      "第167轮： --loss:0.001 --accuracy:94.185 --0:95.647  --1:91.508  --2:98.601  --3:93.325  --4:91.808\n",
      "第168轮： --loss:0.002 --accuracy:94.237 --0:97.311  --1:92.269  --2:97.201  --3:92.169  --4:92.198\n",
      "第169轮： --loss:0.001 --accuracy:94.134 --0:94.878  --1:90.241  --2:97.074  --3:92.940  --4:95.579\n",
      "第170轮： --loss:0.001 --accuracy:94.262 --0:96.543  --1:92.269  --2:98.728  --3:90.629  --4:93.108\n",
      "第171轮： --loss:0.002 --accuracy:93.750 --0:93.342  --1:92.395  --2:96.947  --3:94.480  --4:91.547\n",
      "第172轮： --loss:0.001 --accuracy:93.852 --0:95.006  --1:89.480  --2:96.692  --3:93.967  --4:94.148\n",
      "第173轮： --loss:0.001 --accuracy:94.185 --0:95.903  --1:90.621  --2:98.728  --3:93.710  --4:91.938\n",
      "第174轮： --loss:0.002 --accuracy:94.134 --0:95.391  --1:90.621  --2:98.601  --3:92.169  --4:93.888\n",
      "第175轮： --loss:0.001 --accuracy:94.109 --0:95.647  --1:92.015  --2:98.855  --3:90.244  --4:93.758\n",
      "第176轮： --loss:0.001 --accuracy:94.442 --0:95.391  --1:91.381  --2:98.855  --3:92.426  --4:94.148\n",
      "第177轮： --loss:0.001 --accuracy:93.263 --0:92.574  --1:93.536  --2:98.601  --3:90.372  --4:91.157\n",
      "第178轮： --loss:0.002 --accuracy:94.211 --0:96.927  --1:91.128  --2:97.710  --3:92.041  --4:93.238\n",
      "第179轮： --loss:0.002 --accuracy:93.340 --0:92.574  --1:94.043  --2:98.855  --3:90.757  --4:90.377\n",
      "第180轮： --loss:0.001 --accuracy:94.032 --0:96.543  --1:92.649  --2:97.074  --3:92.811  --4:91.027\n",
      "第181轮： --loss:0.001 --accuracy:93.929 --0:97.439  --1:91.508  --2:95.674  --3:92.811  --4:92.198\n",
      "第182轮： --loss:0.002 --accuracy:93.776 --0:95.775  --1:91.762  --2:98.473  --3:91.271  --4:91.547\n",
      "第183轮： --loss:0.001 --accuracy:93.366 --0:90.269  --1:90.748  --2:98.728  --3:90.244  --4:96.879\n",
      "第184轮： --loss:0.002 --accuracy:94.185 --0:96.415  --1:89.480  --2:98.728  --3:92.683  --4:93.628\n",
      "第185轮： --loss:0.001 --accuracy:94.160 --0:93.342  --1:90.875  --2:98.219  --3:94.095  --4:94.278\n",
      "第186轮： --loss:0.001 --accuracy:93.878 --0:94.750  --1:92.142  --2:98.855  --3:92.426  --4:91.157\n",
      "第187轮： --loss:0.001 --accuracy:94.390 --0:94.238  --1:91.762  --2:98.092  --3:93.325  --4:94.538\n",
      "第188轮： --loss:0.001 --accuracy:94.288 --0:96.671  --1:90.621  --2:98.728  --3:92.555  --4:92.848\n",
      "第189轮： --loss:0.002 --accuracy:93.724 --0:93.086  --1:93.916  --2:97.710  --3:91.913  --4:91.938\n",
      "第190轮： --loss:0.001 --accuracy:94.057 --0:95.006  --1:90.875  --2:98.728  --3:93.838  --4:91.808\n",
      "第191轮： --loss:0.002 --accuracy:93.827 --0:95.519  --1:90.875  --2:98.728  --3:93.453  --4:90.507\n",
      "第192轮： --loss:0.001 --accuracy:94.314 --0:95.775  --1:91.128  --2:98.728  --3:93.068  --4:92.848\n",
      "第193轮： --loss:0.001 --accuracy:94.467 --0:96.799  --1:90.875  --2:98.092  --3:93.325  --4:93.238\n",
      "第194轮： --loss:0.003 --accuracy:93.110 --0:96.927  --1:89.861  --2:96.056  --3:93.582  --4:89.077\n",
      "第195轮： --loss:0.002 --accuracy:93.622 --0:95.903  --1:91.762  --2:98.855  --3:88.960  --4:92.588\n",
      "第196轮： --loss:0.001 --accuracy:94.390 --0:97.823  --1:92.015  --2:96.819  --3:92.683  --4:92.588\n",
      "第197轮： --loss:0.001 --accuracy:94.032 --0:96.927  --1:91.635  --2:98.092  --3:92.298  --4:91.157\n",
      "第198轮： --loss:0.001 --accuracy:93.955 --0:95.775  --1:91.508  --2:98.855  --3:90.372  --4:93.238\n",
      "第199轮： --loss:0.002 --accuracy:94.211 --0:96.799  --1:91.381  --2:97.074  --3:93.710  --4:92.068\n",
      "第200轮： --loss:0.001 --accuracy:93.596 --0:91.293  --1:92.015  --2:97.455  --3:93.838  --4:93.368\n",
      "第201轮： --loss:0.001 --accuracy:94.621 --0:95.903  --1:91.001  --2:98.092  --3:93.325  --4:94.798\n",
      "第202轮： --loss:0.001 --accuracy:94.467 --0:97.695  --1:91.635  --2:97.201  --3:92.555  --4:93.238\n",
      "第203轮： --loss:0.001 --accuracy:94.544 --0:95.903  --1:90.748  --2:98.728  --3:93.068  --4:94.278\n",
      "第204轮： --loss:0.001 --accuracy:94.416 --0:97.055  --1:91.128  --2:97.710  --3:93.196  --4:92.978\n",
      "第205轮： --loss:0.001 --accuracy:93.648 --0:97.439  --1:90.494  --2:97.201  --3:90.757  --4:92.328\n",
      "第206轮： --loss:0.001 --accuracy:94.185 --0:97.311  --1:92.015  --2:98.346  --3:90.244  --4:92.978\n",
      "第207轮： --loss:0.002 --accuracy:93.981 --0:97.183  --1:89.734  --2:95.038  --3:93.068  --4:94.928\n",
      "第208轮： --loss:0.001 --accuracy:94.544 --0:95.006  --1:92.522  --2:98.601  --3:94.095  --4:92.458\n",
      "第209轮： --loss:0.001 --accuracy:93.955 --0:93.726  --1:92.269  --2:98.219  --3:93.325  --4:92.198\n",
      "第210轮： --loss:0.001 --accuracy:94.134 --0:97.183  --1:92.776  --2:97.710  --3:92.041  --4:90.897\n",
      "第211轮： --loss:0.001 --accuracy:94.416 --0:97.055  --1:90.494  --2:97.837  --3:92.940  --4:93.758\n",
      "第212轮： --loss:0.001 --accuracy:93.648 --0:92.702  --1:92.269  --2:98.728  --3:94.352  --4:90.117\n",
      "第213轮： --loss:0.001 --accuracy:94.826 --0:96.415  --1:91.888  --2:98.473  --3:92.298  --4:95.059\n",
      "第214轮： --loss:0.001 --accuracy:94.416 --0:96.287  --1:92.269  --2:98.601  --3:93.325  --4:91.547\n",
      "第215轮： --loss:0.001 --accuracy:93.904 --0:93.214  --1:91.888  --2:98.728  --3:94.095  --4:91.547\n",
      "第216轮： --loss:0.001 --accuracy:94.570 --0:96.415  --1:89.987  --2:97.837  --3:92.555  --4:96.099\n",
      "第217轮： --loss:0.001 --accuracy:94.544 --0:97.823  --1:90.621  --2:98.855  --3:92.940  --4:92.458\n",
      "第218轮： --loss:0.001 --accuracy:94.134 --0:96.031  --1:91.255  --2:97.964  --3:91.271  --4:94.148\n",
      "第219轮： --loss:0.001 --accuracy:94.595 --0:96.671  --1:92.395  --2:97.710  --3:93.710  --4:92.458\n",
      "第220轮： --loss:0.002 --accuracy:93.519 --0:93.726  --1:88.720  --2:98.728  --3:90.629  --4:95.839\n",
      "第221轮： --loss:0.001 --accuracy:94.442 --0:94.366  --1:91.762  --2:98.855  --3:92.683  --4:94.538\n",
      "第222轮： --loss:0.002 --accuracy:93.622 --0:91.421  --1:93.029  --2:96.183  --3:94.480  --4:92.978\n",
      "第223轮： --loss:0.001 --accuracy:94.493 --0:96.543  --1:92.395  --2:97.964  --3:93.196  --4:92.328\n",
      "第224轮： --loss:0.001 --accuracy:94.416 --0:96.671  --1:91.128  --2:97.837  --3:92.940  --4:93.498\n",
      "第225轮： --loss:0.003 --accuracy:93.852 --0:96.287  --1:89.227  --2:97.710  --3:93.582  --4:92.458\n",
      "第226轮： --loss:0.002 --accuracy:94.262 --0:97.055  --1:91.001  --2:96.692  --3:92.426  --4:94.148\n",
      "第227轮： --loss:0.002 --accuracy:94.237 --0:95.775  --1:92.142  --2:98.728  --3:90.501  --4:94.018\n",
      "第228轮： --loss:0.002 --accuracy:94.185 --0:98.207  --1:91.381  --2:97.074  --3:91.142  --4:93.108\n",
      "第229轮： --loss:0.002 --accuracy:94.339 --0:97.311  --1:91.888  --2:97.710  --3:91.913  --4:92.848\n",
      "第230轮： --loss:0.001 --accuracy:93.801 --0:98.207  --1:90.114  --2:95.929  --3:91.528  --4:93.238\n",
      "第231轮： --loss:0.001 --accuracy:94.595 --0:96.543  --1:90.875  --2:98.346  --3:93.967  --4:93.238\n",
      "第232轮： --loss:0.001 --accuracy:94.314 --0:96.031  --1:91.381  --2:98.346  --3:93.068  --4:92.718\n",
      "第233轮： --loss:0.001 --accuracy:94.928 --0:95.903  --1:92.522  --2:98.601  --3:92.811  --4:94.798\n",
      "第234轮： --loss:0.002 --accuracy:94.672 --0:94.878  --1:91.128  --2:98.728  --3:93.582  --4:95.059\n",
      "第235轮： --loss:0.002 --accuracy:94.518 --0:96.927  --1:91.508  --2:98.473  --3:93.196  --4:92.458\n",
      "第236轮： --loss:0.002 --accuracy:94.160 --0:97.311  --1:92.269  --2:98.728  --3:91.784  --4:90.637\n",
      "第237轮： --loss:0.001 --accuracy:94.621 --0:97.695  --1:90.494  --2:98.346  --3:92.811  --4:93.758\n",
      "第238轮： --loss:0.001 --accuracy:94.365 --0:97.695  --1:90.368  --2:97.455  --3:93.196  --4:93.108\n",
      "第239轮： --loss:0.002 --accuracy:93.468 --0:95.775  --1:91.255  --2:98.728  --3:92.811  --4:88.687\n",
      "第240轮： --loss:0.001 --accuracy:94.723 --0:96.927  --1:91.888  --2:98.728  --3:92.940  --4:93.108\n",
      "第241轮： --loss:0.003 --accuracy:94.647 --0:97.055  --1:92.269  --2:98.473  --3:92.426  --4:92.978\n",
      "第242轮： --loss:0.001 --accuracy:93.904 --0:95.134  --1:90.748  --2:95.420  --3:93.453  --4:94.798\n",
      "第243轮： --loss:0.001 --accuracy:94.288 --0:95.262  --1:90.621  --2:98.728  --3:92.940  --4:93.888\n",
      "第244轮： --loss:0.002 --accuracy:94.237 --0:96.031  --1:91.888  --2:98.092  --3:90.629  --4:94.538\n",
      "第245轮： --loss:0.001 --accuracy:94.262 --0:96.031  --1:90.368  --2:98.728  --3:91.913  --4:94.278\n",
      "第246轮： --loss:0.001 --accuracy:94.262 --0:95.134  --1:91.128  --2:98.728  --3:93.068  --4:93.238\n",
      "第247轮： --loss:0.001 --accuracy:94.365 --0:96.287  --1:92.522  --2:98.728  --3:92.041  --4:92.198\n",
      "第248轮： --loss:0.002 --accuracy:93.929 --0:93.214  --1:92.142  --2:97.328  --3:94.095  --4:92.848\n",
      "第249轮： --loss:0.001 --accuracy:94.262 --0:97.183  --1:90.241  --2:98.601  --3:92.426  --4:92.848\n",
      "第250轮： --loss:0.001 --accuracy:94.185 --0:95.903  --1:91.635  --2:97.583  --3:93.582  --4:92.198\n",
      "第251轮： --loss:0.001 --accuracy:94.980 --0:95.519  --1:91.635  --2:98.728  --3:92.811  --4:96.229\n",
      "第252轮： --loss:0.001 --accuracy:94.698 --0:92.702  --1:93.536  --2:98.728  --3:93.838  --4:94.668\n",
      "第253轮： --loss:0.001 --accuracy:94.775 --0:96.799  --1:92.015  --2:98.728  --3:93.453  --4:92.848\n",
      "第254轮： --loss:0.001 --accuracy:94.442 --0:95.006  --1:92.269  --2:98.219  --3:92.940  --4:93.758\n",
      "第255轮： --loss:0.001 --accuracy:93.878 --0:94.878  --1:91.128  --2:98.346  --3:93.068  --4:91.938\n",
      "第256轮： --loss:0.001 --accuracy:94.134 --0:96.927  --1:92.015  --2:95.929  --3:93.710  --4:92.068\n",
      "第257轮： --loss:0.001 --accuracy:93.673 --0:92.318  --1:91.762  --2:98.601  --3:94.480  --4:91.157\n",
      "第258轮： --loss:0.001 --accuracy:94.800 --0:95.391  --1:90.875  --2:98.728  --3:93.838  --4:95.189\n",
      "第259轮： --loss:0.001 --accuracy:94.262 --0:96.927  --1:90.748  --2:98.092  --3:91.142  --4:94.408\n",
      "第260轮： --loss:0.001 --accuracy:94.416 --0:97.567  --1:91.762  --2:97.964  --3:93.068  --4:91.678\n",
      "第261轮： --loss:0.001 --accuracy:94.672 --0:93.982  --1:93.916  --2:98.601  --3:92.683  --4:94.148\n",
      "第262轮： --loss:0.001 --accuracy:94.057 --0:94.238  --1:91.762  --2:98.728  --3:92.169  --4:93.368\n",
      "第263轮： --loss:0.001 --accuracy:94.518 --0:96.287  --1:92.142  --2:98.728  --3:91.913  --4:93.498\n",
      "第264轮： --loss:0.002 --accuracy:94.493 --0:97.439  --1:91.255  --2:98.728  --3:93.582  --4:91.417\n",
      "第265轮： --loss:0.002 --accuracy:94.185 --0:95.903  --1:91.508  --2:97.328  --3:93.453  --4:92.718\n",
      "第266轮： --loss:0.002 --accuracy:94.160 --0:94.878  --1:91.381  --2:98.092  --3:94.737  --4:91.678\n",
      "第267轮： --loss:0.001 --accuracy:94.672 --0:96.031  --1:91.128  --2:98.092  --3:93.967  --4:94.148\n",
      "第268轮： --loss:0.001 --accuracy:94.877 --0:96.031  --1:91.762  --2:98.601  --3:94.223  --4:93.758\n",
      "第269轮： --loss:0.001 --accuracy:94.365 --0:96.415  --1:92.649  --2:98.346  --3:92.298  --4:92.068\n",
      "第270轮： --loss:0.001 --accuracy:94.032 --0:95.903  --1:92.015  --2:97.837  --3:94.480  --4:89.857\n",
      "第271轮： --loss:0.001 --accuracy:94.160 --0:97.567  --1:91.508  --2:97.583  --3:90.757  --4:93.368\n",
      "第272轮： --loss:0.001 --accuracy:94.442 --0:95.134  --1:92.015  --2:97.837  --3:92.940  --4:94.278\n",
      "第273轮： --loss:0.001 --accuracy:94.314 --0:95.647  --1:91.888  --2:98.601  --3:92.555  --4:92.848\n",
      "第274轮： --loss:0.001 --accuracy:93.776 --0:94.238  --1:92.776  --2:98.346  --3:92.683  --4:90.767\n",
      "第275轮： --loss:0.001 --accuracy:93.724 --0:96.415  --1:91.001  --2:97.964  --3:94.865  --4:88.296\n",
      "第276轮： --loss:0.001 --accuracy:94.570 --0:94.494  --1:91.255  --2:98.346  --3:93.710  --4:95.059\n",
      "第277轮： --loss:0.001 --accuracy:94.518 --0:95.262  --1:92.015  --2:98.855  --3:92.041  --4:94.408\n",
      "第278轮： --loss:0.001 --accuracy:94.365 --0:96.415  --1:91.762  --2:98.473  --3:92.555  --4:92.588\n",
      "第279轮： --loss:0.001 --accuracy:94.339 --0:93.982  --1:94.297  --2:98.728  --3:92.426  --4:92.198\n",
      "第280轮： --loss:0.002 --accuracy:94.749 --0:97.055  --1:91.888  --2:98.473  --3:91.271  --4:95.059\n",
      "第281轮： --loss:0.001 --accuracy:94.595 --0:94.622  --1:92.142  --2:98.601  --3:94.095  --4:93.498\n",
      "第282轮： --loss:0.001 --accuracy:94.365 --0:96.415  --1:91.635  --2:98.346  --3:90.886  --4:94.538\n",
      "第283轮： --loss:0.001 --accuracy:94.314 --0:97.951  --1:90.875  --2:97.583  --3:92.683  --4:92.458\n",
      "第284轮： --loss:0.002 --accuracy:94.647 --0:95.647  --1:90.621  --2:98.728  --3:93.453  --4:94.798\n",
      "第285轮： --loss:0.001 --accuracy:94.544 --0:96.415  --1:92.269  --2:98.601  --3:93.453  --4:91.938\n",
      "第286轮： --loss:0.001 --accuracy:94.698 --0:94.494  --1:91.635  --2:98.728  --3:93.582  --4:95.059\n",
      "第287轮： --loss:0.001 --accuracy:94.493 --0:95.775  --1:91.255  --2:98.601  --3:93.582  --4:93.238\n",
      "第288轮： --loss:0.001 --accuracy:94.262 --0:92.446  --1:93.409  --2:98.473  --3:93.710  --4:93.238\n",
      "第289轮： --loss:0.001 --accuracy:94.442 --0:97.567  --1:91.888  --2:97.328  --3:91.399  --4:94.018\n",
      "第290轮： --loss:0.000 --accuracy:94.288 --0:96.415  --1:92.395  --2:98.473  --3:93.196  --4:90.897\n",
      "第291轮： --loss:0.001 --accuracy:94.544 --0:96.799  --1:90.494  --2:98.346  --3:93.325  --4:93.758\n",
      "第292轮： --loss:0.001 --accuracy:94.595 --0:96.799  --1:91.635  --2:97.328  --3:92.940  --4:94.278\n",
      "第293轮： --loss:0.001 --accuracy:94.390 --0:94.622  --1:91.255  --2:98.601  --3:92.811  --4:94.668\n",
      "第294轮： --loss:0.001 --accuracy:94.493 --0:96.159  --1:91.888  --2:98.219  --3:94.480  --4:91.678\n",
      "第295轮： --loss:0.002 --accuracy:94.903 --0:96.927  --1:92.015  --2:98.473  --3:92.940  --4:94.148\n",
      "第296轮： --loss:0.001 --accuracy:94.570 --0:96.927  --1:91.255  --2:97.837  --3:92.555  --4:94.278\n",
      "第297轮： --loss:0.001 --accuracy:93.519 --0:90.013  --1:92.776  --2:98.728  --3:93.967  --4:92.068\n",
      "第298轮： --loss:0.001 --accuracy:94.288 --0:97.951  --1:91.888  --2:97.964  --3:92.426  --4:91.157\n",
      "第299轮： --loss:0.001 --accuracy:93.904 --0:97.439  --1:90.748  --2:96.565  --3:92.683  --4:92.068\n"
     ]
    }
   ],
   "source": [
    "# 训练过程\n",
    "correct = 0\n",
    "total =0\n",
    "epochs = 300\n",
    "loss_list = []\n",
    "accuracy_list = []\n",
    "\n",
    "# model.double()\n",
    "\n",
    "for epoch in range(epochs):\n",
    "    model.train()\n",
    "\n",
    "    # 定义训练的损失\n",
    "    for xb,yb in train_dl:\n",
    "        # print(xb.shape,xb.dtype)\n",
    "        xb,yb = xb.to(device),yb.to(device)\n",
    "        pred = model(xb)\n",
    "        loss = loss_func(pred,yb.long())/len(train_dl)\n",
    "\n",
    "        loss.backward()\n",
    "        opt_func.step()\n",
    "        opt_func.zero_grad()\n",
    "    \n",
    "\n",
    "    # 测试模式\n",
    "    model.eval()\n",
    "    correct = 0\n",
    "    total =0\n",
    "    totals = np.zeros(5)\n",
    "    corrects = np.zeros(5) \n",
    "\n",
    "    for features,labels in test_dl:\n",
    "        outputs = model(features)\n",
    "        # print(outputs.shape)\n",
    "        _,predicted = torch.max(outputs,1)\n",
    "\n",
    "        total += labels.size(0)\n",
    "        correct += (predicted == labels).sum().item()\n",
    "        \n",
    "        for i in range(5):\n",
    "            totals[i] = (labels == i).sum().item()\n",
    "            corrects[i] = ((predicted == i)& (predicted == labels)).sum().item()\n",
    "    \n",
    "    # print(totals,corrects)\n",
    "    accuracy = 100*correct/total\n",
    "    # print(corrects)\n",
    "    # print(totals)\n",
    "    accuracys = [100*c/t for c,t in zip(corrects,totals) ]\n",
    "    # print(accuracys)\n",
    "    loss_list.append(loss.item())\n",
    "    accuracy_list.append(accuracy)\n",
    "\n",
    "\n",
    "    print(\"第{}轮：\".format(epoch),\"--loss:{:.3f}\".format(loss.item()),\"--accuracy:{:.3f}\".format(accuracy),\"--0:{:.3f}  --1:{:.3f}  --2:{:.3f}  --3:{:.3f}  --4:{:.3f}\".format(accuracys[0],accuracys[1],accuracys[2],accuracys[3],accuracys[4]))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": [
       "tensor([ True, False, False, False])"
      ]
     },
     "metadata": {},
     "execution_count": 12
    }
   ],
   "source": [
    "a = torch.tensor([1,2,3,3])\n",
    "b = torch.tensor([1,1,1,1])\n",
    "c = a==b\n",
    "d = a==b\n",
    "c & d"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "tensor([4, 4, 3,  ..., 3, 2, 0])\ntensor([4, 4, 3,  ..., 3, 2, 0])\n93.90368852459017\n"
     ]
    }
   ],
   "source": [
    "# 模型评估\n",
    "xb,yb = iter(test_dl).next()\n",
    "pred = model(xb)\n",
    "_,predicted = torch.max(pred,1)\n",
    "print(predicted)\n",
    "print(yb)\n",
    "\n",
    "correct = 0\n",
    "total =0\n",
    "\n",
    "with torch.no_grad():\n",
    "    for images,labels in test_dl:\n",
    "        outputs = model(images)\n",
    "        # print(outputs.shape)\n",
    "        _,predicted = torch.max(outputs,1)\n",
    "        total += labels.size(0)\n",
    "        correct += (predicted == labels).sum().item()\n",
    "print(100*correct/total)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "output_type": "display_data",
     "data": {
      "text/plain": "<Figure size 432x288 with 1 Axes>",
      "image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<!-- Created with matplotlib (https://matplotlib.org/) -->\n<svg height=\"248.518125pt\" version=\"1.1\" viewBox=\"0 0 384.828125 248.518125\" width=\"384.828125pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <metadata>\n  <rdf:RDF xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n   <cc:Work>\n    <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\n    <dc:date>2021-05-19T19:05:47.005453</dc:date>\n    <dc:format>image/svg+xml</dc:format>\n    <dc:creator>\n     <cc:Agent>\n      <dc:title>Matplotlib v3.3.4, https://matplotlib.org/</dc:title>\n     </cc:Agent>\n    </dc:creator>\n   </cc:Work>\n  </rdf:RDF>\n </metadata>\n <defs>\n  <style type=\"text/css\">*{stroke-linecap:butt;stroke-linejoin:round;}</style>\n </defs>\n <g id=\"figure_1\">\n  <g id=\"patch_1\">\n   <path d=\"M 0 248.518125 \nL 384.828125 248.518125 \nL 384.828125 0 \nL 0 0 \nz\n\" style=\"fill:none;\"/>\n  </g>\n  <g id=\"axes_1\">\n   <g id=\"patch_2\">\n    <path d=\"M 42.828125 224.64 \nL 377.628125 224.64 \nL 377.628125 7.2 \nL 42.828125 7.2 \nz\n\" style=\"fill:#ffffff;\"/>\n   </g>\n   <g id=\"matplotlib.axis_1\">\n    <g id=\"xtick_1\">\n     <g id=\"line2d_1\">\n      <defs>\n       <path d=\"M 0 0 \nL 0 3.5 \n\" id=\"mb3eb493c85\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n      </defs>\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"58.046307\" xlink:href=\"#mb3eb493c85\" y=\"224.64\"/>\n      </g>\n     </g>\n     <g id=\"text_1\">\n      <!-- 0 -->\n      <g transform=\"translate(54.865057 239.238438)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 31.78125 66.40625 \nQ 24.171875 66.40625 20.328125 58.90625 \nQ 16.5 51.421875 16.5 36.375 \nQ 16.5 21.390625 20.328125 13.890625 \nQ 24.171875 6.390625 31.78125 6.390625 \nQ 39.453125 6.390625 43.28125 13.890625 \nQ 47.125 21.390625 47.125 36.375 \nQ 47.125 51.421875 43.28125 58.90625 \nQ 39.453125 66.40625 31.78125 66.40625 \nz\nM 31.78125 74.21875 \nQ 44.046875 74.21875 50.515625 64.515625 \nQ 56.984375 54.828125 56.984375 36.375 \nQ 56.984375 17.96875 50.515625 8.265625 \nQ 44.046875 -1.421875 31.78125 -1.421875 \nQ 19.53125 -1.421875 13.0625 8.265625 \nQ 6.59375 17.96875 6.59375 36.375 \nQ 6.59375 54.828125 13.0625 64.515625 \nQ 19.53125 74.21875 31.78125 74.21875 \nz\n\" id=\"DejaVuSans-48\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-48\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_2\">\n     <g id=\"line2d_2\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"108.943236\" xlink:href=\"#mb3eb493c85\" y=\"224.64\"/>\n      </g>\n     </g>\n     <g id=\"text_2\">\n      <!-- 50 -->\n      <g transform=\"translate(102.580736 239.238438)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 10.796875 72.90625 \nL 49.515625 72.90625 \nL 49.515625 64.59375 \nL 19.828125 64.59375 \nL 19.828125 46.734375 \nQ 21.96875 47.46875 24.109375 47.828125 \nQ 26.265625 48.1875 28.421875 48.1875 \nQ 40.625 48.1875 47.75 41.5 \nQ 54.890625 34.8125 54.890625 23.390625 \nQ 54.890625 11.625 47.5625 5.09375 \nQ 40.234375 -1.421875 26.90625 -1.421875 \nQ 22.3125 -1.421875 17.546875 -0.640625 \nQ 12.796875 0.140625 7.71875 1.703125 \nL 7.71875 11.625 \nQ 12.109375 9.234375 16.796875 8.0625 \nQ 21.484375 6.890625 26.703125 6.890625 \nQ 35.15625 6.890625 40.078125 11.328125 \nQ 45.015625 15.765625 45.015625 23.390625 \nQ 45.015625 31 40.078125 35.4375 \nQ 35.15625 39.890625 26.703125 39.890625 \nQ 22.75 39.890625 18.8125 39.015625 \nQ 14.890625 38.140625 10.796875 36.28125 \nz\n\" id=\"DejaVuSans-53\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-53\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_3\">\n     <g id=\"line2d_3\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"159.840165\" xlink:href=\"#mb3eb493c85\" y=\"224.64\"/>\n      </g>\n     </g>\n     <g id=\"text_3\">\n      <!-- 100 -->\n      <g transform=\"translate(150.296415 239.238438)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 12.40625 8.296875 \nL 28.515625 8.296875 \nL 28.515625 63.921875 \nL 10.984375 60.40625 \nL 10.984375 69.390625 \nL 28.421875 72.90625 \nL 38.28125 72.90625 \nL 38.28125 8.296875 \nL 54.390625 8.296875 \nL 54.390625 0 \nL 12.40625 0 \nz\n\" id=\"DejaVuSans-49\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-49\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_4\">\n     <g id=\"line2d_4\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"210.737094\" xlink:href=\"#mb3eb493c85\" y=\"224.64\"/>\n      </g>\n     </g>\n     <g id=\"text_4\">\n      <!-- 150 -->\n      <g transform=\"translate(201.193344 239.238438)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-49\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-53\"/>\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_5\">\n     <g id=\"line2d_5\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"261.634023\" xlink:href=\"#mb3eb493c85\" y=\"224.64\"/>\n      </g>\n     </g>\n     <g id=\"text_5\">\n      <!-- 200 -->\n      <g transform=\"translate(252.090273 239.238438)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 19.1875 8.296875 \nL 53.609375 8.296875 \nL 53.609375 0 \nL 7.328125 0 \nL 7.328125 8.296875 \nQ 12.9375 14.109375 22.625 23.890625 \nQ 32.328125 33.6875 34.8125 36.53125 \nQ 39.546875 41.84375 41.421875 45.53125 \nQ 43.3125 49.21875 43.3125 52.78125 \nQ 43.3125 58.59375 39.234375 62.25 \nQ 35.15625 65.921875 28.609375 65.921875 \nQ 23.96875 65.921875 18.8125 64.3125 \nQ 13.671875 62.703125 7.8125 59.421875 \nL 7.8125 69.390625 \nQ 13.765625 71.78125 18.9375 73 \nQ 24.125 74.21875 28.421875 74.21875 \nQ 39.75 74.21875 46.484375 68.546875 \nQ 53.21875 62.890625 53.21875 53.421875 \nQ 53.21875 48.921875 51.53125 44.890625 \nQ 49.859375 40.875 45.40625 35.40625 \nQ 44.1875 33.984375 37.640625 27.21875 \nQ 31.109375 20.453125 19.1875 8.296875 \nz\n\" id=\"DejaVuSans-50\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-50\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_6\">\n     <g id=\"line2d_6\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"312.530953\" xlink:href=\"#mb3eb493c85\" y=\"224.64\"/>\n      </g>\n     </g>\n     <g id=\"text_6\">\n      <!-- 250 -->\n      <g transform=\"translate(302.987203 239.238438)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-50\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-53\"/>\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_7\">\n     <g id=\"line2d_7\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"363.427882\" xlink:href=\"#mb3eb493c85\" y=\"224.64\"/>\n      </g>\n     </g>\n     <g id=\"text_7\">\n      <!-- 300 -->\n      <g transform=\"translate(353.884132 239.238438)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 40.578125 39.3125 \nQ 47.65625 37.796875 51.625 33 \nQ 55.609375 28.21875 55.609375 21.1875 \nQ 55.609375 10.40625 48.1875 4.484375 \nQ 40.765625 -1.421875 27.09375 -1.421875 \nQ 22.515625 -1.421875 17.65625 -0.515625 \nQ 12.796875 0.390625 7.625 2.203125 \nL 7.625 11.71875 \nQ 11.71875 9.328125 16.59375 8.109375 \nQ 21.484375 6.890625 26.8125 6.890625 \nQ 36.078125 6.890625 40.9375 10.546875 \nQ 45.796875 14.203125 45.796875 21.1875 \nQ 45.796875 27.640625 41.28125 31.265625 \nQ 36.765625 34.90625 28.71875 34.90625 \nL 20.21875 34.90625 \nL 20.21875 43.015625 \nL 29.109375 43.015625 \nQ 36.375 43.015625 40.234375 45.921875 \nQ 44.09375 48.828125 44.09375 54.296875 \nQ 44.09375 59.90625 40.109375 62.90625 \nQ 36.140625 65.921875 28.71875 65.921875 \nQ 24.65625 65.921875 20.015625 65.03125 \nQ 15.375 64.15625 9.8125 62.3125 \nL 9.8125 71.09375 \nQ 15.4375 72.65625 20.34375 73.4375 \nQ 25.25 74.21875 29.59375 74.21875 \nQ 40.828125 74.21875 47.359375 69.109375 \nQ 53.90625 64.015625 53.90625 55.328125 \nQ 53.90625 49.265625 50.4375 45.09375 \nQ 46.96875 40.921875 40.578125 39.3125 \nz\n\" id=\"DejaVuSans-51\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-51\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\n      </g>\n     </g>\n    </g>\n   </g>\n   <g id=\"matplotlib.axis_2\">\n    <g id=\"ytick_1\">\n     <g id=\"line2d_8\">\n      <defs>\n       <path d=\"M 0 0 \nL -3.5 0 \n\" id=\"mdc7bf7ce56\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n      </defs>\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"42.828125\" xlink:href=\"#mdc7bf7ce56\" y=\"220.773698\"/>\n      </g>\n     </g>\n     <g id=\"text_8\">\n      <!-- 0.000 -->\n      <g transform=\"translate(7.2 224.572916)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 10.6875 12.40625 \nL 21 12.40625 \nL 21 0 \nL 10.6875 0 \nz\n\" id=\"DejaVuSans-46\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"222.65625\" xlink:href=\"#DejaVuSans-48\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_2\">\n     <g id=\"line2d_9\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"42.828125\" xlink:href=\"#mdc7bf7ce56\" y=\"195.759019\"/>\n      </g>\n     </g>\n     <g id=\"text_9\">\n      <!-- 0.002 -->\n      <g transform=\"translate(7.2 199.558238)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"222.65625\" xlink:href=\"#DejaVuSans-50\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_3\">\n     <g id=\"line2d_10\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"42.828125\" xlink:href=\"#mdc7bf7ce56\" y=\"170.744341\"/>\n      </g>\n     </g>\n     <g id=\"text_10\">\n      <!-- 0.004 -->\n      <g transform=\"translate(7.2 174.543559)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 37.796875 64.3125 \nL 12.890625 25.390625 \nL 37.796875 25.390625 \nz\nM 35.203125 72.90625 \nL 47.609375 72.90625 \nL 47.609375 25.390625 \nL 58.015625 25.390625 \nL 58.015625 17.1875 \nL 47.609375 17.1875 \nL 47.609375 0 \nL 37.796875 0 \nL 37.796875 17.1875 \nL 4.890625 17.1875 \nL 4.890625 26.703125 \nz\n\" id=\"DejaVuSans-52\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"222.65625\" xlink:href=\"#DejaVuSans-52\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_4\">\n     <g id=\"line2d_11\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"42.828125\" xlink:href=\"#mdc7bf7ce56\" y=\"145.729662\"/>\n      </g>\n     </g>\n     <g id=\"text_11\">\n      <!-- 0.006 -->\n      <g transform=\"translate(7.2 149.528881)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 33.015625 40.375 \nQ 26.375 40.375 22.484375 35.828125 \nQ 18.609375 31.296875 18.609375 23.390625 \nQ 18.609375 15.53125 22.484375 10.953125 \nQ 26.375 6.390625 33.015625 6.390625 \nQ 39.65625 6.390625 43.53125 10.953125 \nQ 47.40625 15.53125 47.40625 23.390625 \nQ 47.40625 31.296875 43.53125 35.828125 \nQ 39.65625 40.375 33.015625 40.375 \nz\nM 52.59375 71.296875 \nL 52.59375 62.3125 \nQ 48.875 64.0625 45.09375 64.984375 \nQ 41.3125 65.921875 37.59375 65.921875 \nQ 27.828125 65.921875 22.671875 59.328125 \nQ 17.53125 52.734375 16.796875 39.40625 \nQ 19.671875 43.65625 24.015625 45.921875 \nQ 28.375 48.1875 33.59375 48.1875 \nQ 44.578125 48.1875 50.953125 41.515625 \nQ 57.328125 34.859375 57.328125 23.390625 \nQ 57.328125 12.15625 50.6875 5.359375 \nQ 44.046875 -1.421875 33.015625 -1.421875 \nQ 20.359375 -1.421875 13.671875 8.265625 \nQ 6.984375 17.96875 6.984375 36.375 \nQ 6.984375 53.65625 15.1875 63.9375 \nQ 23.390625 74.21875 37.203125 74.21875 \nQ 40.921875 74.21875 44.703125 73.484375 \nQ 48.484375 72.75 52.59375 71.296875 \nz\n\" id=\"DejaVuSans-54\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"222.65625\" xlink:href=\"#DejaVuSans-54\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_5\">\n     <g id=\"line2d_12\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"42.828125\" xlink:href=\"#mdc7bf7ce56\" y=\"120.714984\"/>\n      </g>\n     </g>\n     <g id=\"text_12\">\n      <!-- 0.008 -->\n      <g transform=\"translate(7.2 124.514203)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 31.78125 34.625 \nQ 24.75 34.625 20.71875 30.859375 \nQ 16.703125 27.09375 16.703125 20.515625 \nQ 16.703125 13.921875 20.71875 10.15625 \nQ 24.75 6.390625 31.78125 6.390625 \nQ 38.8125 6.390625 42.859375 10.171875 \nQ 46.921875 13.96875 46.921875 20.515625 \nQ 46.921875 27.09375 42.890625 30.859375 \nQ 38.875 34.625 31.78125 34.625 \nz\nM 21.921875 38.8125 \nQ 15.578125 40.375 12.03125 44.71875 \nQ 8.5 49.078125 8.5 55.328125 \nQ 8.5 64.0625 14.71875 69.140625 \nQ 20.953125 74.21875 31.78125 74.21875 \nQ 42.671875 74.21875 48.875 69.140625 \nQ 55.078125 64.0625 55.078125 55.328125 \nQ 55.078125 49.078125 51.53125 44.71875 \nQ 48 40.375 41.703125 38.8125 \nQ 48.828125 37.15625 52.796875 32.3125 \nQ 56.78125 27.484375 56.78125 20.515625 \nQ 56.78125 9.90625 50.3125 4.234375 \nQ 43.84375 -1.421875 31.78125 -1.421875 \nQ 19.734375 -1.421875 13.25 4.234375 \nQ 6.78125 9.90625 6.78125 20.515625 \nQ 6.78125 27.484375 10.78125 32.3125 \nQ 14.796875 37.15625 21.921875 38.8125 \nz\nM 18.3125 54.390625 \nQ 18.3125 48.734375 21.84375 45.5625 \nQ 25.390625 42.390625 31.78125 42.390625 \nQ 38.140625 42.390625 41.71875 45.5625 \nQ 45.3125 48.734375 45.3125 54.390625 \nQ 45.3125 60.0625 41.71875 63.234375 \nQ 38.140625 66.40625 31.78125 66.40625 \nQ 25.390625 66.40625 21.84375 63.234375 \nQ 18.3125 60.0625 18.3125 54.390625 \nz\n\" id=\"DejaVuSans-56\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"222.65625\" xlink:href=\"#DejaVuSans-56\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_6\">\n     <g id=\"line2d_13\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"42.828125\" xlink:href=\"#mdc7bf7ce56\" y=\"95.700305\"/>\n      </g>\n     </g>\n     <g id=\"text_13\">\n      <!-- 0.010 -->\n      <g transform=\"translate(7.2 99.499524)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-49\"/>\n       <use x=\"222.65625\" xlink:href=\"#DejaVuSans-48\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_7\">\n     <g id=\"line2d_14\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"42.828125\" xlink:href=\"#mdc7bf7ce56\" y=\"70.685627\"/>\n      </g>\n     </g>\n     <g id=\"text_14\">\n      <!-- 0.012 -->\n      <g transform=\"translate(7.2 74.484846)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-49\"/>\n       <use x=\"222.65625\" xlink:href=\"#DejaVuSans-50\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_8\">\n     <g id=\"line2d_15\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"42.828125\" xlink:href=\"#mdc7bf7ce56\" y=\"45.670948\"/>\n      </g>\n     </g>\n     <g id=\"text_15\">\n      <!-- 0.014 -->\n      <g transform=\"translate(7.2 49.470167)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-49\"/>\n       <use x=\"222.65625\" xlink:href=\"#DejaVuSans-52\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_9\">\n     <g id=\"line2d_16\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"42.828125\" xlink:href=\"#mdc7bf7ce56\" y=\"20.65627\"/>\n      </g>\n     </g>\n     <g id=\"text_16\">\n      <!-- 0.016 -->\n      <g transform=\"translate(7.2 24.455489)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-49\"/>\n       <use x=\"222.65625\" xlink:href=\"#DejaVuSans-54\"/>\n      </g>\n     </g>\n    </g>\n   </g>\n   <g id=\"line2d_17\">\n    <path clip-path=\"url(#pe40ed69440)\" d=\"M 58.046307 17.083636 \nL 59.064245 62.327969 \nL 60.082184 94.231985 \nL 61.100123 73.684067 \nL 62.118061 105.246763 \nL 63.136 120.630505 \nL 64.153938 119.728211 \nL 65.171877 109.460466 \nL 66.189815 101.131161 \nL 67.207754 126.74966 \nL 68.225693 127.166037 \nL 69.243631 164.756746 \nL 70.26157 143.274029 \nL 71.279508 132.997437 \nL 72.297447 153.928272 \nL 73.315386 144.903641 \nL 74.333324 140.972369 \nL 75.351263 138.535944 \nL 76.369201 154.106265 \nL 77.38714 161.572559 \nL 78.405078 143.262957 \nL 79.423017 153.600359 \nL 80.440956 161.536007 \nL 81.458894 173.957334 \nL 82.476833 163.541268 \nL 83.494771 164.738382 \nL 84.51271 184.093659 \nL 85.530649 164.44171 \nL 86.548587 180.141245 \nL 87.566526 182.544839 \nL 88.584464 177.75319 \nL 89.602403 160.192589 \nL 90.620341 180.238617 \nL 91.63828 176.096687 \nL 92.656219 170.568058 \nL 93.674157 169.288246 \nL 94.692096 174.53034 \nL 95.710034 187.426137 \nL 97.745912 172.190474 \nL 98.76385 169.483636 \nL 99.781789 173.3379 \nL 100.799727 181.629237 \nL 101.817666 174.156981 \nL 102.835604 181.36442 \nL 103.853543 170.831503 \nL 104.871482 186.20012 \nL 105.88942 168.974509 \nL 106.907359 166.355793 \nL 107.925297 176.306967 \nL 108.943236 183.359121 \nL 109.961175 188.700471 \nL 110.979113 169.809749 \nL 111.997052 197.480703 \nL 113.01499 184.902719 \nL 114.032929 183.989545 \nL 115.050867 189.684231 \nL 116.068806 176.502208 \nL 117.086745 195.918979 \nL 118.104683 189.771163 \nL 119.122622 202.470186 \nL 120.14056 181.559317 \nL 121.158499 201.203759 \nL 122.176438 185.798528 \nL 123.194376 196.038617 \nL 124.212315 184.668855 \nL 125.230253 199.608983 \nL 126.248192 188.690579 \nL 127.26613 187.011912 \nL 128.284069 193.855302 \nL 129.302008 189.868503 \nL 130.319946 191.553765 \nL 131.337885 195.19303 \nL 132.355823 178.375787 \nL 133.373762 197.218973 \nL 134.391701 181.850445 \nL 135.409639 196.853487 \nL 136.427578 195.185662 \nL 137.445516 203.00263 \nL 138.463455 185.900518 \nL 139.481393 188.660494 \nL 140.499332 201.832726 \nL 141.517271 199.265596 \nL 142.535209 190.289731 \nL 143.553148 191.028919 \nL 144.571086 191.157042 \nL 145.589025 196.518211 \nL 146.606964 169.763464 \nL 147.624902 197.277856 \nL 148.642841 204.342803 \nL 149.660779 191.297254 \nL 150.678718 200.057726 \nL 151.696656 199.904662 \nL 152.714595 198.138121 \nL 153.732534 204.751445 \nL 155.768411 193.116207 \nL 156.786349 203.1506 \nL 157.804288 202.260607 \nL 158.822227 190.44028 \nL 159.840165 191.367837 \nL 160.858104 195.867258 \nL 161.876042 204.749379 \nL 162.893981 192.903962 \nL 163.911919 194.166375 \nL 164.929858 197.435677 \nL 165.947797 193.310144 \nL 166.965735 196.042251 \nL 167.983674 210.750762 \nL 169.001612 205.682261 \nL 170.019551 205.959742 \nL 171.03749 186.480409 \nL 172.055428 203.609298 \nL 173.073367 206.795034 \nL 174.091305 193.672126 \nL 175.109244 195.632473 \nL 176.127182 192.385872 \nL 177.145121 183.547525 \nL 178.16306 202.582787 \nL 179.180998 202.128894 \nL 180.198937 202.408392 \nL 181.216875 189.250472 \nL 182.234814 212.113947 \nL 183.252753 201.992643 \nL 184.270691 205.495115 \nL 185.28863 205.973399 \nL 186.306568 200.161759 \nL 187.324507 201.138288 \nL 188.342445 193.014896 \nL 189.360384 207.821409 \nL 190.378323 202.670513 \nL 191.396261 203.846217 \nL 192.4142 197.127704 \nL 193.432138 205.978508 \nL 194.450077 195.566829 \nL 195.468016 201.806524 \nL 196.485954 201.586323 \nL 197.503893 203.437517 \nL 198.521831 208.966758 \nL 199.53977 206.216852 \nL 200.557708 207.310914 \nL 201.575647 206.166973 \nL 202.593586 191.808101 \nL 203.611524 201.47532 \nL 204.629463 188.135348 \nL 205.647401 186.092294 \nL 206.66534 194.287468 \nL 207.683279 208.705209 \nL 208.701217 206.035253 \nL 209.719156 210.047288 \nL 210.737094 197.293111 \nL 211.755033 205.539335 \nL 212.772971 201.083699 \nL 213.79091 206.817451 \nL 214.808849 204.77121 \nL 215.826787 210.945313 \nL 216.844726 205.012213 \nL 217.862664 192.677792 \nL 218.880603 207.390262 \nL 219.898542 206.115088 \nL 220.91648 200.886552 \nL 221.934419 203.824055 \nL 222.952357 205.647083 \nL 223.970296 205.281497 \nL 224.988234 206.18159 \nL 226.006173 201.664599 \nL 227.024112 201.241054 \nL 228.04205 204.289403 \nL 229.059989 194.969154 \nL 231.095866 213.482429 \nL 232.113805 196.01698 \nL 233.131743 203.318367 \nL 234.149682 203.760932 \nL 235.16762 196.616268 \nL 236.185559 203.562671 \nL 237.203497 204.062771 \nL 238.221436 202.691462 \nL 239.239375 199.13068 \nL 240.257313 199.286243 \nL 241.275252 202.992038 \nL 242.29319 204.276588 \nL 243.311129 202.005467 \nL 244.329068 208.764762 \nL 245.347006 201.204184 \nL 246.364945 206.927541 \nL 247.382883 202.604708 \nL 248.400822 208.13412 \nL 249.41876 211.749004 \nL 250.436699 201.881368 \nL 251.454638 206.80144 \nL 252.472576 193.993568 \nL 253.490515 206.965261 \nL 254.508453 202.914828 \nL 255.526392 187.010879 \nL 256.544331 200.288842 \nL 257.562269 207.025175 \nL 258.580208 207.772755 \nL 259.598146 211.625529 \nL 260.616085 201.417457 \nL 261.634023 212.687221 \nL 262.651962 208.639654 \nL 263.669901 205.670307 \nL 264.687839 210.779859 \nL 265.705778 203.144804 \nL 266.723716 207.378725 \nL 267.741655 210.763517 \nL 268.759594 200.402408 \nL 269.777532 206.300129 \nL 270.795471 207.191131 \nL 271.813409 210.067994 \nL 272.831348 202.255802 \nL 273.849286 206.86905 \nL 274.867225 203.980121 \nL 275.885164 205.540181 \nL 276.903102 205.047243 \nL 277.921041 207.570744 \nL 278.938979 210.45104 \nL 279.956918 208.756418 \nL 280.974857 208.761859 \nL 281.992795 191.748191 \nL 283.010734 208.985966 \nL 284.028672 195.801037 \nL 285.046611 204.830563 \nL 286.064549 208.856629 \nL 287.082488 188.433357 \nL 288.100427 200.431001 \nL 289.118365 199.922449 \nL 290.136304 198.88505 \nL 291.154242 201.177563 \nL 292.172181 208.572674 \nL 293.19012 202.421391 \nL 294.208058 206.826008 \nL 295.225997 213.035672 \nL 296.243935 195.566468 \nL 297.261874 201.989542 \nL 298.279812 195.588317 \nL 299.297751 206.061079 \nL 301.333628 198.938494 \nL 302.351567 206.161333 \nL 303.369505 188.971829 \nL 304.387444 210.204019 \nL 305.405383 206.120468 \nL 306.423321 191.028759 \nL 307.44126 205.81131 \nL 308.459198 205.557207 \nL 310.495075 201.409324 \nL 311.513014 206.097512 \nL 312.530953 214.161744 \nL 313.548891 209.131039 \nL 314.56683 205.045417 \nL 315.584768 208.69308 \nL 316.602707 205.108618 \nL 317.620646 208.051651 \nL 318.638584 209.641558 \nL 319.656523 212.072385 \nL 320.674461 208.938597 \nL 321.6924 212.751462 \nL 322.710338 202.385323 \nL 323.728277 207.563747 \nL 324.746216 211.258469 \nL 325.764154 206.594821 \nL 326.782093 197.919077 \nL 327.800031 198.58588 \nL 328.81797 200.776309 \nL 329.835909 205.995884 \nL 330.853847 211.945003 \nL 331.871786 204.171961 \nL 332.889724 210.115519 \nL 333.907663 204.698148 \nL 334.925601 207.735437 \nL 335.94354 202.949843 \nL 336.961479 210.131371 \nL 337.979417 211.401031 \nL 338.997356 206.822396 \nL 340.015294 204.454459 \nL 341.033233 211.495164 \nL 342.051172 208.536834 \nL 343.06911 195.51933 \nL 344.087049 205.552808 \nL 345.104987 208.519205 \nL 346.122926 206.237719 \nL 347.140864 201.55788 \nL 348.158803 208.528766 \nL 349.176742 202.536179 \nL 350.19468 206.602322 \nL 351.212619 206.929323 \nL 352.230557 206.616755 \nL 353.248496 214.756364 \nL 354.266435 208.718458 \nL 355.284373 208.19834 \nL 356.302312 214.318942 \nL 357.32025 210.174674 \nL 358.338189 201.43694 \nL 359.356127 203.519817 \nL 360.374066 206.204699 \nL 361.392005 204.778478 \nL 362.409943 204.620064 \nL 362.409943 204.620064 \n\" style=\"fill:none;stroke:#1f77b4;stroke-linecap:square;stroke-width:1.5;\"/>\n   </g>\n   <g id=\"patch_3\">\n    <path d=\"M 42.828125 224.64 \nL 42.828125 7.2 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n   </g>\n   <g id=\"patch_4\">\n    <path d=\"M 377.628125 224.64 \nL 377.628125 7.2 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n   </g>\n   <g id=\"patch_5\">\n    <path d=\"M 42.828125 224.64 \nL 377.628125 224.64 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n   </g>\n   <g id=\"patch_6\">\n    <path d=\"M 42.828125 7.2 \nL 377.628125 7.2 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n   </g>\n  </g>\n </g>\n <defs>\n  <clipPath id=\"pe40ed69440\">\n   <rect height=\"217.44\" width=\"334.8\" x=\"42.828125\" y=\"7.2\"/>\n  </clipPath>\n </defs>\n</svg>\n",
      "image/png": "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\n"
     },
     "metadata": {
      "needs_background": "light"
     }
    }
   ],
   "source": [
    "# matplotlib可视化\n",
    "import matplotlib.pyplot as plt\n",
    "fig = plt.figure(1)\n",
    "plt.plot(loss_list)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "output_type": "display_data",
     "data": {
      "text/plain": "<Figure size 432x288 with 1 Axes>",
      "image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<!-- Created with matplotlib (https://matplotlib.org/) -->\n<svg height=\"248.518125pt\" version=\"1.1\" viewBox=\"0 0 368.925 248.518125\" width=\"368.925pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <metadata>\n  <rdf:RDF xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n   <cc:Work>\n    <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\n    <dc:date>2021-05-19T19:05:47.160788</dc:date>\n    <dc:format>image/svg+xml</dc:format>\n    <dc:creator>\n     <cc:Agent>\n      <dc:title>Matplotlib v3.3.4, https://matplotlib.org/</dc:title>\n     </cc:Agent>\n    </dc:creator>\n   </cc:Work>\n  </rdf:RDF>\n </metadata>\n <defs>\n  <style type=\"text/css\">*{stroke-linecap:butt;stroke-linejoin:round;}</style>\n </defs>\n <g id=\"figure_1\">\n  <g id=\"patch_1\">\n   <path d=\"M -0 248.518125 \nL 368.925 248.518125 \nL 368.925 0 \nL -0 0 \nz\n\" style=\"fill:none;\"/>\n  </g>\n  <g id=\"axes_1\">\n   <g id=\"patch_2\">\n    <path d=\"M 26.925 224.64 \nL 361.725 224.64 \nL 361.725 7.2 \nL 26.925 7.2 \nz\n\" style=\"fill:#ffffff;\"/>\n   </g>\n   <g id=\"matplotlib.axis_1\">\n    <g id=\"xtick_1\">\n     <g id=\"line2d_1\">\n      <defs>\n       <path d=\"M 0 0 \nL 0 3.5 \n\" id=\"m74ebac5631\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n      </defs>\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"42.143182\" xlink:href=\"#m74ebac5631\" y=\"224.64\"/>\n      </g>\n     </g>\n     <g id=\"text_1\">\n      <!-- 0 -->\n      <g transform=\"translate(38.961932 239.238438)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 31.78125 66.40625 \nQ 24.171875 66.40625 20.328125 58.90625 \nQ 16.5 51.421875 16.5 36.375 \nQ 16.5 21.390625 20.328125 13.890625 \nQ 24.171875 6.390625 31.78125 6.390625 \nQ 39.453125 6.390625 43.28125 13.890625 \nQ 47.125 21.390625 47.125 36.375 \nQ 47.125 51.421875 43.28125 58.90625 \nQ 39.453125 66.40625 31.78125 66.40625 \nz\nM 31.78125 74.21875 \nQ 44.046875 74.21875 50.515625 64.515625 \nQ 56.984375 54.828125 56.984375 36.375 \nQ 56.984375 17.96875 50.515625 8.265625 \nQ 44.046875 -1.421875 31.78125 -1.421875 \nQ 19.53125 -1.421875 13.0625 8.265625 \nQ 6.59375 17.96875 6.59375 36.375 \nQ 6.59375 54.828125 13.0625 64.515625 \nQ 19.53125 74.21875 31.78125 74.21875 \nz\n\" id=\"DejaVuSans-48\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-48\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_2\">\n     <g id=\"line2d_2\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"93.040111\" xlink:href=\"#m74ebac5631\" y=\"224.64\"/>\n      </g>\n     </g>\n     <g id=\"text_2\">\n      <!-- 50 -->\n      <g transform=\"translate(86.677611 239.238438)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 10.796875 72.90625 \nL 49.515625 72.90625 \nL 49.515625 64.59375 \nL 19.828125 64.59375 \nL 19.828125 46.734375 \nQ 21.96875 47.46875 24.109375 47.828125 \nQ 26.265625 48.1875 28.421875 48.1875 \nQ 40.625 48.1875 47.75 41.5 \nQ 54.890625 34.8125 54.890625 23.390625 \nQ 54.890625 11.625 47.5625 5.09375 \nQ 40.234375 -1.421875 26.90625 -1.421875 \nQ 22.3125 -1.421875 17.546875 -0.640625 \nQ 12.796875 0.140625 7.71875 1.703125 \nL 7.71875 11.625 \nQ 12.109375 9.234375 16.796875 8.0625 \nQ 21.484375 6.890625 26.703125 6.890625 \nQ 35.15625 6.890625 40.078125 11.328125 \nQ 45.015625 15.765625 45.015625 23.390625 \nQ 45.015625 31 40.078125 35.4375 \nQ 35.15625 39.890625 26.703125 39.890625 \nQ 22.75 39.890625 18.8125 39.015625 \nQ 14.890625 38.140625 10.796875 36.28125 \nz\n\" id=\"DejaVuSans-53\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-53\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_3\">\n     <g id=\"line2d_3\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"143.93704\" xlink:href=\"#m74ebac5631\" y=\"224.64\"/>\n      </g>\n     </g>\n     <g id=\"text_3\">\n      <!-- 100 -->\n      <g transform=\"translate(134.39329 239.238438)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 12.40625 8.296875 \nL 28.515625 8.296875 \nL 28.515625 63.921875 \nL 10.984375 60.40625 \nL 10.984375 69.390625 \nL 28.421875 72.90625 \nL 38.28125 72.90625 \nL 38.28125 8.296875 \nL 54.390625 8.296875 \nL 54.390625 0 \nL 12.40625 0 \nz\n\" id=\"DejaVuSans-49\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-49\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_4\">\n     <g id=\"line2d_4\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"194.833969\" xlink:href=\"#m74ebac5631\" y=\"224.64\"/>\n      </g>\n     </g>\n     <g id=\"text_4\">\n      <!-- 150 -->\n      <g transform=\"translate(185.290219 239.238438)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-49\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-53\"/>\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_5\">\n     <g id=\"line2d_5\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"245.730898\" xlink:href=\"#m74ebac5631\" y=\"224.64\"/>\n      </g>\n     </g>\n     <g id=\"text_5\">\n      <!-- 200 -->\n      <g transform=\"translate(236.187148 239.238438)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 19.1875 8.296875 \nL 53.609375 8.296875 \nL 53.609375 0 \nL 7.328125 0 \nL 7.328125 8.296875 \nQ 12.9375 14.109375 22.625 23.890625 \nQ 32.328125 33.6875 34.8125 36.53125 \nQ 39.546875 41.84375 41.421875 45.53125 \nQ 43.3125 49.21875 43.3125 52.78125 \nQ 43.3125 58.59375 39.234375 62.25 \nQ 35.15625 65.921875 28.609375 65.921875 \nQ 23.96875 65.921875 18.8125 64.3125 \nQ 13.671875 62.703125 7.8125 59.421875 \nL 7.8125 69.390625 \nQ 13.765625 71.78125 18.9375 73 \nQ 24.125 74.21875 28.421875 74.21875 \nQ 39.75 74.21875 46.484375 68.546875 \nQ 53.21875 62.890625 53.21875 53.421875 \nQ 53.21875 48.921875 51.53125 44.890625 \nQ 49.859375 40.875 45.40625 35.40625 \nQ 44.1875 33.984375 37.640625 27.21875 \nQ 31.109375 20.453125 19.1875 8.296875 \nz\n\" id=\"DejaVuSans-50\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-50\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_6\">\n     <g id=\"line2d_6\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"296.627828\" xlink:href=\"#m74ebac5631\" y=\"224.64\"/>\n      </g>\n     </g>\n     <g id=\"text_6\">\n      <!-- 250 -->\n      <g transform=\"translate(287.084078 239.238438)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-50\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-53\"/>\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_7\">\n     <g id=\"line2d_7\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"347.524757\" xlink:href=\"#m74ebac5631\" y=\"224.64\"/>\n      </g>\n     </g>\n     <g id=\"text_7\">\n      <!-- 300 -->\n      <g transform=\"translate(337.981007 239.238438)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 40.578125 39.3125 \nQ 47.65625 37.796875 51.625 33 \nQ 55.609375 28.21875 55.609375 21.1875 \nQ 55.609375 10.40625 48.1875 4.484375 \nQ 40.765625 -1.421875 27.09375 -1.421875 \nQ 22.515625 -1.421875 17.65625 -0.515625 \nQ 12.796875 0.390625 7.625 2.203125 \nL 7.625 11.71875 \nQ 11.71875 9.328125 16.59375 8.109375 \nQ 21.484375 6.890625 26.8125 6.890625 \nQ 36.078125 6.890625 40.9375 10.546875 \nQ 45.796875 14.203125 45.796875 21.1875 \nQ 45.796875 27.640625 41.28125 31.265625 \nQ 36.765625 34.90625 28.71875 34.90625 \nL 20.21875 34.90625 \nL 20.21875 43.015625 \nL 29.109375 43.015625 \nQ 36.375 43.015625 40.234375 45.921875 \nQ 44.09375 48.828125 44.09375 54.296875 \nQ 44.09375 59.90625 40.109375 62.90625 \nQ 36.140625 65.921875 28.71875 65.921875 \nQ 24.65625 65.921875 20.015625 65.03125 \nQ 15.375 64.15625 9.8125 62.3125 \nL 9.8125 71.09375 \nQ 15.4375 72.65625 20.34375 73.4375 \nQ 25.25 74.21875 29.59375 74.21875 \nQ 40.828125 74.21875 47.359375 69.109375 \nQ 53.90625 64.015625 53.90625 55.328125 \nQ 53.90625 49.265625 50.4375 45.09375 \nQ 46.96875 40.921875 40.578125 39.3125 \nz\n\" id=\"DejaVuSans-51\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-51\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\n      </g>\n     </g>\n    </g>\n   </g>\n   <g id=\"matplotlib.axis_2\">\n    <g id=\"ytick_1\">\n     <g id=\"line2d_8\">\n      <defs>\n       <path d=\"M 0 0 \nL -3.5 0 \n\" id=\"m549ac72f48\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n      </defs>\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"26.925\" xlink:href=\"#m549ac72f48\" y=\"197.408001\"/>\n      </g>\n     </g>\n     <g id=\"text_8\">\n      <!-- 65 -->\n      <g transform=\"translate(7.2 201.20722)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 33.015625 40.375 \nQ 26.375 40.375 22.484375 35.828125 \nQ 18.609375 31.296875 18.609375 23.390625 \nQ 18.609375 15.53125 22.484375 10.953125 \nQ 26.375 6.390625 33.015625 6.390625 \nQ 39.65625 6.390625 43.53125 10.953125 \nQ 47.40625 15.53125 47.40625 23.390625 \nQ 47.40625 31.296875 43.53125 35.828125 \nQ 39.65625 40.375 33.015625 40.375 \nz\nM 52.59375 71.296875 \nL 52.59375 62.3125 \nQ 48.875 64.0625 45.09375 64.984375 \nQ 41.3125 65.921875 37.59375 65.921875 \nQ 27.828125 65.921875 22.671875 59.328125 \nQ 17.53125 52.734375 16.796875 39.40625 \nQ 19.671875 43.65625 24.015625 45.921875 \nQ 28.375 48.1875 33.59375 48.1875 \nQ 44.578125 48.1875 50.953125 41.515625 \nQ 57.328125 34.859375 57.328125 23.390625 \nQ 57.328125 12.15625 50.6875 5.359375 \nQ 44.046875 -1.421875 33.015625 -1.421875 \nQ 20.359375 -1.421875 13.671875 8.265625 \nQ 6.984375 17.96875 6.984375 36.375 \nQ 6.984375 53.65625 15.1875 63.9375 \nQ 23.390625 74.21875 37.203125 74.21875 \nQ 40.921875 74.21875 44.703125 73.484375 \nQ 48.484375 72.75 52.59375 71.296875 \nz\n\" id=\"DejaVuSans-54\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-54\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-53\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_2\">\n     <g id=\"line2d_9\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"26.925\" xlink:href=\"#m549ac72f48\" y=\"167.333398\"/>\n      </g>\n     </g>\n     <g id=\"text_9\">\n      <!-- 70 -->\n      <g transform=\"translate(7.2 171.132616)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 8.203125 72.90625 \nL 55.078125 72.90625 \nL 55.078125 68.703125 \nL 28.609375 0 \nL 18.3125 0 \nL 43.21875 64.59375 \nL 8.203125 64.59375 \nz\n\" id=\"DejaVuSans-55\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-55\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_3\">\n     <g id=\"line2d_10\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"26.925\" xlink:href=\"#m549ac72f48\" y=\"137.258794\"/>\n      </g>\n     </g>\n     <g id=\"text_10\">\n      <!-- 75 -->\n      <g transform=\"translate(7.2 141.058013)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-55\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-53\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_4\">\n     <g id=\"line2d_11\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"26.925\" xlink:href=\"#m549ac72f48\" y=\"107.18419\"/>\n      </g>\n     </g>\n     <g id=\"text_11\">\n      <!-- 80 -->\n      <g transform=\"translate(7.2 110.983409)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 31.78125 34.625 \nQ 24.75 34.625 20.71875 30.859375 \nQ 16.703125 27.09375 16.703125 20.515625 \nQ 16.703125 13.921875 20.71875 10.15625 \nQ 24.75 6.390625 31.78125 6.390625 \nQ 38.8125 6.390625 42.859375 10.171875 \nQ 46.921875 13.96875 46.921875 20.515625 \nQ 46.921875 27.09375 42.890625 30.859375 \nQ 38.875 34.625 31.78125 34.625 \nz\nM 21.921875 38.8125 \nQ 15.578125 40.375 12.03125 44.71875 \nQ 8.5 49.078125 8.5 55.328125 \nQ 8.5 64.0625 14.71875 69.140625 \nQ 20.953125 74.21875 31.78125 74.21875 \nQ 42.671875 74.21875 48.875 69.140625 \nQ 55.078125 64.0625 55.078125 55.328125 \nQ 55.078125 49.078125 51.53125 44.71875 \nQ 48 40.375 41.703125 38.8125 \nQ 48.828125 37.15625 52.796875 32.3125 \nQ 56.78125 27.484375 56.78125 20.515625 \nQ 56.78125 9.90625 50.3125 4.234375 \nQ 43.84375 -1.421875 31.78125 -1.421875 \nQ 19.734375 -1.421875 13.25 4.234375 \nQ 6.78125 9.90625 6.78125 20.515625 \nQ 6.78125 27.484375 10.78125 32.3125 \nQ 14.796875 37.15625 21.921875 38.8125 \nz\nM 18.3125 54.390625 \nQ 18.3125 48.734375 21.84375 45.5625 \nQ 25.390625 42.390625 31.78125 42.390625 \nQ 38.140625 42.390625 41.71875 45.5625 \nQ 45.3125 48.734375 45.3125 54.390625 \nQ 45.3125 60.0625 41.71875 63.234375 \nQ 38.140625 66.40625 31.78125 66.40625 \nQ 25.390625 66.40625 21.84375 63.234375 \nQ 18.3125 60.0625 18.3125 54.390625 \nz\n\" id=\"DejaVuSans-56\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-56\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_5\">\n     <g id=\"line2d_12\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"26.925\" xlink:href=\"#m549ac72f48\" y=\"77.109587\"/>\n      </g>\n     </g>\n     <g id=\"text_12\">\n      <!-- 85 -->\n      <g transform=\"translate(7.2 80.908806)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-56\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-53\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_6\">\n     <g id=\"line2d_13\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"26.925\" xlink:href=\"#m549ac72f48\" y=\"47.034983\"/>\n      </g>\n     </g>\n     <g id=\"text_13\">\n      <!-- 90 -->\n      <g transform=\"translate(7.2 50.834202)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 10.984375 1.515625 \nL 10.984375 10.5 \nQ 14.703125 8.734375 18.5 7.8125 \nQ 22.3125 6.890625 25.984375 6.890625 \nQ 35.75 6.890625 40.890625 13.453125 \nQ 46.046875 20.015625 46.78125 33.40625 \nQ 43.953125 29.203125 39.59375 26.953125 \nQ 35.25 24.703125 29.984375 24.703125 \nQ 19.046875 24.703125 12.671875 31.3125 \nQ 6.296875 37.9375 6.296875 49.421875 \nQ 6.296875 60.640625 12.9375 67.421875 \nQ 19.578125 74.21875 30.609375 74.21875 \nQ 43.265625 74.21875 49.921875 64.515625 \nQ 56.59375 54.828125 56.59375 36.375 \nQ 56.59375 19.140625 48.40625 8.859375 \nQ 40.234375 -1.421875 26.421875 -1.421875 \nQ 22.703125 -1.421875 18.890625 -0.6875 \nQ 15.09375 0.046875 10.984375 1.515625 \nz\nM 30.609375 32.421875 \nQ 37.25 32.421875 41.125 36.953125 \nQ 45.015625 41.5 45.015625 49.421875 \nQ 45.015625 57.28125 41.125 61.84375 \nQ 37.25 66.40625 30.609375 66.40625 \nQ 23.96875 66.40625 20.09375 61.84375 \nQ 16.21875 57.28125 16.21875 49.421875 \nQ 16.21875 41.5 20.09375 36.953125 \nQ 23.96875 32.421875 30.609375 32.421875 \nz\n\" id=\"DejaVuSans-57\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-57\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_7\">\n     <g id=\"line2d_14\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"26.925\" xlink:href=\"#m549ac72f48\" y=\"16.96038\"/>\n      </g>\n     </g>\n     <g id=\"text_14\">\n      <!-- 95 -->\n      <g transform=\"translate(7.2 20.759599)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-57\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-53\"/>\n      </g>\n     </g>\n    </g>\n   </g>\n   <g id=\"line2d_15\">\n    <path clip-path=\"url(#pba13737671)\" d=\"M 42.143182 214.756364 \nL 43.16112 168.072937 \nL 45.196998 145.886754 \nL 46.214936 98.432974 \nL 47.232875 93.34864 \nL 48.250813 91.653862 \nL 49.268752 88.418377 \nL 50.28669 82.871832 \nL 51.304629 76.400862 \nL 52.322568 74.397942 \nL 53.340506 70.854316 \nL 54.358445 70.854316 \nL 55.376383 62.996709 \nL 56.394322 68.851397 \nL 57.412261 60.685649 \nL 58.430199 64.691487 \nL 59.448138 53.906537 \nL 60.466076 64.845558 \nL 61.484015 57.604234 \nL 62.501953 53.136184 \nL 63.519892 49.900699 \nL 64.537831 45.278577 \nL 65.555769 55.601315 \nL 67.591646 45.124506 \nL 68.609585 43.891941 \nL 69.627524 49.130345 \nL 70.645462 41.58088 \nL 71.663401 47.589638 \nL 72.681339 48.205921 \nL 73.699278 42.351234 \nL 74.717216 40.810526 \nL 75.735155 46.665214 \nL 76.753094 42.197163 \nL 77.771032 38.961678 \nL 78.788971 40.348314 \nL 79.806909 47.281496 \nL 81.842787 37.2669 \nL 82.860725 37.883183 \nL 83.878664 34.339556 \nL 84.896602 34.801769 \nL 85.914541 41.734951 \nL 86.932479 38.037254 \nL 87.950418 33.106991 \nL 88.968357 38.191324 \nL 89.986295 34.339556 \nL 91.004234 42.197163 \nL 92.022172 34.493627 \nL 93.040111 36.650617 \nL 94.05805 32.336637 \nL 96.093927 36.034334 \nL 97.111865 32.182566 \nL 98.129804 30.950001 \nL 99.147742 30.333718 \nL 100.165681 29.409294 \nL 101.18362 33.261061 \nL 102.201558 33.723274 \nL 103.219497 29.101152 \nL 104.237435 27.714516 \nL 105.255374 36.958759 \nL 106.273313 32.490708 \nL 107.291251 26.019738 \nL 108.30919 27.252304 \nL 109.327128 29.717435 \nL 110.345067 32.798849 \nL 111.363005 28.330799 \nL 112.380944 35.572122 \nL 113.398883 31.104071 \nL 114.416821 28.484869 \nL 115.43476 30.79593 \nL 116.452698 27.252304 \nL 117.470637 34.185486 \nL 118.488576 38.037254 \nL 119.506514 27.406374 \nL 120.524453 27.098233 \nL 121.542391 29.409294 \nL 122.56033 33.877344 \nL 123.578268 27.868586 \nL 124.596207 28.484869 \nL 125.614146 27.406374 \nL 126.632084 30.333718 \nL 127.650023 29.563364 \nL 128.667961 25.249384 \nL 129.6859 32.95292 \nL 130.703839 35.418051 \nL 131.721777 28.63894 \nL 132.739716 28.176728 \nL 133.757654 27.098233 \nL 134.775593 33.415132 \nL 135.793531 29.255223 \nL 136.81147 31.104071 \nL 137.829409 26.636021 \nL 138.847347 27.406374 \nL 139.865286 26.019738 \nL 140.883224 26.327879 \nL 141.901163 25.403455 \nL 142.919102 25.095314 \nL 143.93704 30.179647 \nL 144.954979 27.252304 \nL 145.972917 25.249384 \nL 146.990856 24.633101 \nL 148.008794 26.019738 \nL 149.026733 29.101152 \nL 150.044672 25.095314 \nL 151.06261 31.412213 \nL 152.080549 24.787172 \nL 153.098487 27.714516 \nL 154.116426 26.944162 \nL 155.134365 29.409294 \nL 156.152303 29.717435 \nL 157.170242 27.406374 \nL 158.18818 23.708677 \nL 159.206119 29.563364 \nL 160.224057 24.633101 \nL 161.241996 25.557526 \nL 162.259935 23.862748 \nL 163.277873 24.787172 \nL 164.295812 26.173809 \nL 165.31375 24.32496 \nL 167.349628 27.714516 \nL 168.367566 21.551687 \nL 169.385505 24.941243 \nL 170.403443 22.784253 \nL 171.421382 24.32496 \nL 172.43932 32.336637 \nL 173.457259 22.16797 \nL 174.475198 28.330799 \nL 175.493136 24.787172 \nL 176.511075 31.412213 \nL 177.529013 25.865667 \nL 178.546952 27.560445 \nL 179.564891 21.705758 \nL 180.582829 26.173809 \nL 181.600768 23.862748 \nL 182.618706 26.019738 \nL 183.636645 27.560445 \nL 184.654583 30.79593 \nL 185.672522 23.400536 \nL 186.690461 24.633101 \nL 187.708399 28.022657 \nL 188.726338 22.784253 \nL 189.744276 24.787172 \nL 190.762215 21.243546 \nL 191.780154 22.322041 \nL 192.798092 20.473192 \nL 193.816031 26.327879 \nL 194.833969 26.173809 \nL 195.851908 22.16797 \nL 196.869846 22.16797 \nL 197.887785 29.409294 \nL 198.905724 24.941243 \nL 199.923662 23.246465 \nL 200.941601 22.322041 \nL 201.959539 31.720354 \nL 202.977478 22.322041 \nL 203.995417 21.243546 \nL 205.013355 25.711596 \nL 206.031294 23.862748 \nL 207.049232 24.479031 \nL 208.067171 22.476111 \nL 209.085109 22.476111 \nL 210.103048 25.403455 \nL 211.120987 26.790091 \nL 212.138925 21.859829 \nL 213.156864 21.551687 \nL 214.174802 22.16797 \nL 215.192741 21.397616 \nL 216.21068 24.479031 \nL 217.228618 23.862748 \nL 218.246557 21.859829 \nL 219.264495 22.16797 \nL 220.282434 22.322041 \nL 221.300372 20.319121 \nL 222.318311 27.406374 \nL 223.33625 21.705758 \nL 224.354188 26.944162 \nL 225.372127 22.784253 \nL 226.390065 23.400536 \nL 227.408004 24.32496 \nL 228.425943 26.790091 \nL 229.443881 21.859829 \nL 230.46182 22.013899 \nL 231.479758 23.708677 \nL 232.497697 20.627263 \nL 233.515635 21.243546 \nL 234.533574 24.633101 \nL 235.551513 22.630182 \nL 236.569451 24.016819 \nL 237.58739 21.089475 \nL 238.605328 20.165051 \nL 239.623267 28.330799 \nL 240.641206 25.249384 \nL 241.659144 20.627263 \nL 242.677083 22.784253 \nL 243.695021 23.246465 \nL 244.71296 21.705758 \nL 245.730898 25.403455 \nL 246.748837 19.240626 \nL 247.766776 20.165051 \nL 248.784714 19.702839 \nL 249.802653 20.473192 \nL 250.820591 25.095314 \nL 251.83853 21.859829 \nL 252.856469 23.092394 \nL 253.874407 19.702839 \nL 254.892346 23.246465 \nL 255.910284 22.16797 \nL 256.928223 20.473192 \nL 257.946161 25.095314 \nL 258.9641 18.008061 \nL 259.982039 20.473192 \nL 260.999977 23.554606 \nL 262.017916 19.548768 \nL 263.035854 19.702839 \nL 264.053793 22.16797 \nL 265.071732 19.394697 \nL 266.08967 25.865667 \nL 267.107609 20.319121 \nL 268.125547 25.249384 \nL 269.143486 20.01098 \nL 270.161424 20.473192 \nL 271.179363 23.862748 \nL 272.197302 21.397616 \nL 273.21524 21.551687 \nL 274.233179 21.859829 \nL 275.251117 20.935404 \nL 276.269056 24.170889 \nL 277.286995 19.394697 \nL 278.304933 21.089475 \nL 279.322872 17.391778 \nL 280.34081 18.932485 \nL 281.358749 19.856909 \nL 282.376687 22.013899 \nL 283.394626 19.240626 \nL 284.412565 20.781334 \nL 285.430503 26.173809 \nL 286.448442 18.624344 \nL 287.46638 19.086556 \nL 288.484319 23.554606 \nL 289.502258 21.243546 \nL 290.520196 21.551687 \nL 291.538135 21.397616 \nL 292.556073 21.397616 \nL 293.574012 20.781334 \nL 294.59195 23.400536 \nL 295.609889 21.397616 \nL 296.627828 21.859829 \nL 297.645766 17.083636 \nL 298.663705 18.778414 \nL 299.681643 18.316202 \nL 300.699582 20.319121 \nL 301.717521 23.708677 \nL 302.735459 22.16797 \nL 303.753398 24.941243 \nL 304.771336 18.162131 \nL 305.789275 21.397616 \nL 306.807213 20.473192 \nL 307.825152 18.932485 \nL 308.843091 22.630182 \nL 309.861029 19.856909 \nL 310.878968 20.01098 \nL 311.896906 21.859829 \nL 312.914845 22.013899 \nL 313.932784 18.932485 \nL 314.950722 17.699919 \nL 315.968661 20.781334 \nL 316.986599 22.784253 \nL 318.004538 22.013899 \nL 319.022476 20.319121 \nL 320.040415 21.089475 \nL 321.058354 24.32496 \nL 322.076292 24.633101 \nL 323.094231 19.548768 \nL 324.112169 19.856909 \nL 325.130108 20.781334 \nL 326.148047 20.935404 \nL 327.165985 18.470273 \nL 328.183924 19.394697 \nL 329.201862 20.781334 \nL 330.219801 21.089475 \nL 331.237739 19.086556 \nL 332.255678 19.702839 \nL 333.273617 18.778414 \nL 335.309494 21.397616 \nL 336.327432 20.319121 \nL 337.345371 21.243546 \nL 338.36331 19.702839 \nL 339.381248 19.394697 \nL 340.399187 20.627263 \nL 341.417125 20.01098 \nL 342.435064 17.545849 \nL 343.453002 19.548768 \nL 344.470941 25.865667 \nL 345.48888 21.243546 \nL 346.506818 23.554606 \nL 346.506818 23.554606 \n\" style=\"fill:none;stroke:#1f77b4;stroke-linecap:square;stroke-width:1.5;\"/>\n   </g>\n   <g id=\"patch_3\">\n    <path d=\"M 26.925 224.64 \nL 26.925 7.2 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n   </g>\n   <g id=\"patch_4\">\n    <path d=\"M 361.725 224.64 \nL 361.725 7.2 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n   </g>\n   <g id=\"patch_5\">\n    <path d=\"M 26.925 224.64 \nL 361.725 224.64 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n   </g>\n   <g id=\"patch_6\">\n    <path d=\"M 26.925 7.2 \nL 361.725 7.2 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n   </g>\n  </g>\n </g>\n <defs>\n  <clipPath id=\"pba13737671\">\n   <rect height=\"217.44\" width=\"334.8\" x=\"26.925\" y=\"7.2\"/>\n  </clipPath>\n </defs>\n</svg>\n",
      "image/png": "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\n"
     },
     "metadata": {
      "needs_background": "light"
     }
    }
   ],
   "source": [
    "\n",
    "# %%\n",
    "# matplotlib可视化accuracy\n",
    "fit = plt.figure(2)\n",
    "plt.plot(accuracy_list)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 使用tensorboard进行可视化\n",
    "# 写入数据\n",
    "from torch.utils.tensorboard import SummaryWriter\n",
    "\n",
    "xb,yb = iter(test_dl).next()\n",
    "\n",
    "# Writer will output to ./runs/ directory by default\n",
    "writer = SummaryWriter(\"../runs/\")\n",
    "\n",
    "writer.add_graph(model, xb[0])\n",
    "for i in range(0,epochs):\n",
    "    writer.add_scalar('loss_',np.array(loss_list[i]))\n",
    "    writer.add_scalar('accuracy_',np.array(accuracy_list[i]))\n",
    "writer.close()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 模型持久化\n",
    "path = './model.model'\n",
    "torch.save(model.state_dict(),path)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": [
       "<All keys matched successfully>"
      ]
     },
     "metadata": {},
     "execution_count": 18
    }
   ],
   "source": [
    "# 加载持久化模型\n",
    "path = './model.model'\n",
    "net = Net()\n",
    "net.load_state_dict(torch.load(path))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ]
}